Страницы

Поиск по вопросам

Показаны сообщения с ярлыком яндекс-танк. Показать все сообщения
Показаны сообщения с ярлыком яндекс-танк. Показать все сообщения

четверг, 9 апреля 2020 г.

Нагрузочное тестирование Web-сервера по HTTPS на основе алгоритмов ГОСТ

#яндекс_танк

                    
Стоит задача провести нагрузочное тестирование Web-сервера по HTTPS который настроен
на работу по алгоритмам ГОСТ. На сервере с танком openssl ciphers выдает список в котором
есть ГОСТы. Запустил нагрузочный тест и в перехваченном трафике видно что не проходит
Handshake: в сообщении Client Hello в списке Cipher suites отсуствую ГОСТы. При выполнении
команды openssl s_client -connect ipserver:port -key gosrPrivate.pem -cert gostCert.pem
-msg с сервера с танком GET запрос выполняется успешно. В чем может быть проблема?
    


Ответы

Ответ 1



Впилили поддержку клиентских ciphers и сертификатов https://github.com/yandex/yandex-tank/pull/174 https://github.com/yandex-load/phantom/pull/1 попробуйте поставить фантом и танк из репозиториев?

не загружается модуль yatank_OnlineRep

#яндекс_танк

                    
Как я понял старый плагин онлайн-графиков канул в лету (http://clubs.ya.ru/yandex-tank/replies.xml?item_no=510)
и ему на смену пришел yatank-online. Пробую им воспользоваться и на старте Танка получаю
ошибки следующего рода:

14:53:00 INFO: Loading configs...
14:53:00 INFO: Loading plugins...
14:53:00 INFO: Exception: Traceback (most recent call last):
  File "/usr/lib/yandex-tank/Tank/ConsoleWorker.py", line 183, in configure
    self.core.load_plugins()
  File "/usr/lib/yandex-tank/tankcore.py", line 233, in load_plugins
    instance = self.__load_plugin(plugin_name, plugin_path)
  File "/usr/lib/yandex-tank/tankcore.py", line 257, in __load_plugin
    exec ("import " + classname)
  File "", line 1, in 
ImportError: No module named yatank_OnlineRep

14:53:00 ERROR: No module named yatank_OnlineRep
14:53:00 ERROR: Exception: No module named yatank_OnlineRep


Сам модуль ставился пипом и по-умолчанию лег в /usr/local/lib/python2.7/dist-packages/yatank_OnlineReport/
в то время как основные плагины лежат в /usr/lib/yandex-tank/Tank/Plugins/. По каким
путям, кроме своего родного дира, Танк еще ищет и как его завернуть в нужное место?


Ubuntu 1404 
Tank 1.6.8 (ppa installed)
yatank-online 0.0.5 (pip installed)

    


Ответы

Ответ 1



У вас старый танк, текущая версия 1.7.28. Начиная с ветки 1.7 изменился способ импортирования плагинов (теперь это стандартный питонячий импорт). Поставьте 1.7.28 -- должно заработать. UPD: начиная с ветки танка 1.8 мы потеряли совместимость с этим плагином. Старый код сохранен тут, эта же версия сейчас в PyPI. Совместимость с новой версией in progress, работа идет в мастере репозитория. Вместо плагина онлайн отчета советую использовать сервис Overload. Это бесплатно и там больше возможностей. Если все-таки хочется плагин, то ставить так: pip install https://api.github.com/repos/yandex-load/yatank-online/tarball/master

пятница, 13 марта 2020 г.

Создание корректных запросов для yandex.tank\phantom

#яндекс_танк


Т.к. я только начинаю знакомиться с танком, возник еще один вопрос - как правильно
задать ему запрос. Имеется локальный web-сервер, на нем крутиться небольшой сайт. К
нему напрямую подключен сервер с танком. Нагрузка генерируется фантомом. Но апач постоянно
выдает в логах ssl ошибку Invalid URI in request. Можете посоветовать, чем можно "вытащить"
корректные запросы к сайту? wget? может быть, curl?

UPD

пример вывода answ.log:

208 488 35886 852 0
HTTP/1.1 404 Not Found
Date: Thu, 28 Jan 2016 13:39:50 GMT
Server: Apache/2.4.6 (CentOS)
Content-Length: 289
Connection: close
Content-Type: text/html; charset=iso-8859-1
ERROR 404: Not Found.
HTTP/1.1 400 Bad Request^M
Date: Tue, 02 Feb 2016 10:56:39 GMT^M
Server: Apache/2.4.6 (CentOS)^M
Content-Length: 307^M
Connection: close^M
Content-Type: text/html; charset=iso-8859-1^M
^M


400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.


Apache/2.4.6 (CentOS) Server at 192.168.238.211 Port 443
366 488 35985 688 0 HTTP/1.1 200 OK Date: Thu, 28 Jan 2016 13:39:50 GMT Server: Apache/2.4.6 (CentOS) Last-Modified: Sat, 26 Jun 2010 09:38:02 GMT ETag: "369-489eba4cc1280" Accept-Ranges: bytes Content-Length: 873 Connection: close Content-Type: text/css 0K 100% 44,7M=0s HTTP/1.1 400 Bad Request^M Date: Tue, 02 Feb 2016 10:56:39 GMT^M Server: Apache/2.4.6 (CentOS)^M Content-Length: 307^M Connection: close^M Content-Type: text/html; charset=iso-8859-1^M ^M 400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.


Apache/2.4.6 (CentOS) Server at 192.168.238.211 Port 443
load.ini: [phantom] threads=60 phantom_path=/usr/bin/phantom phantom_modules_path=/usr/lib/phantom/ instances=5000 address=192.168.238.211 ;Target's address port=443 ;target's port rps_schedule=const(1000,30s) ;load scheme writelog=all gatling_ip=192.168.238.210 ;generator's network interface ammofile=https://192.168.238.211/ammo/ammo.txt ssl=1


Ответы

Ответ 1



В комментах уже выяснили, что у вас неверный формат запросов, как нужно делать описано в документации. На практике наиболее используемые uri-style и request-style. Uri-style – это просто список uri в отдельном файле, опционально после uri через пробел можно задать тег, тогда будут дополнительные агрегаты по тегам; заголовки задаются в любом месте в [] и применяются ко всем последующим запросам: [Connection: close] [Host: example.com] / /test?param=1 Если у вас только GET запросы - этого достаточно. Чтобы слать запросы произвольного вида нужно использовать request-style, там содержимое запроса отправляется практически "как есть" исправляются только переводы строки в заголовках на \r\n при необходимости, формат описан в документации. Собрать GET запросы можно по логам веб-сервера, с POST/PUT сложнее, если нужны они то, можно сделать генератор под конкретный сервис, узнав, что за данные в него нужно слать. Если нет хорошего описания, что за данные надо слать, можно посмотреть, что фактически отправляется - или через developer tools браузера или при помощи утилит для захвата трафика, например, wireshark (с https тут будут проблемы).

суббота, 22 июня 2019 г.

не загружается модуль yatank_OnlineRep

Как я понял старый плагин онлайн-графиков канул в лету (http://clubs.ya.ru/yandex-tank/replies.xml?item_no=510) и ему на смену пришел yatank-online. Пробую им воспользоваться и на старте Танка получаю ошибки следующего рода:
14:53:00 INFO: Loading configs... 14:53:00 INFO: Loading plugins... 14:53:00 INFO: Exception: Traceback (most recent call last): File "/usr/lib/yandex-tank/Tank/ConsoleWorker.py", line 183, in configure self.core.load_plugins() File "/usr/lib/yandex-tank/tankcore.py", line 233, in load_plugins instance = self.__load_plugin(plugin_name, plugin_path) File "/usr/lib/yandex-tank/tankcore.py", line 257, in __load_plugin exec ("import " + classname) File "", line 1, in ImportError: No module named yatank_OnlineRep
14:53:00 ERROR: No module named yatank_OnlineRep 14:53:00 ERROR: Exception: No module named yatank_OnlineRep

Сам модуль ставился пипом и по-умолчанию лег в /usr/local/lib/python2.7/dist-packages/yatank_OnlineReport/ в то время как основные плагины лежат в /usr/lib/yandex-tank/Tank/Plugins/. По каким путям, кроме своего родного дира, Танк еще ищет и как его завернуть в нужное место?
Ubuntu 1404 Tank 1.6.8 (ppa installed) yatank-online 0.0.5 (pip installed)


Ответ

У вас старый танк, текущая версия 1.7.28. Начиная с ветки 1.7 изменился способ импортирования плагинов (теперь это стандартный питонячий импорт). Поставьте 1.7.28 -- должно заработать.
UPD: начиная с ветки танка 1.8 мы потеряли совместимость с этим плагином. Старый код сохранен тут, эта же версия сейчас в PyPI. Совместимость с новой версией in progress, работа идет в мастере репозитория.
Вместо плагина онлайн отчета советую использовать сервис Overload. Это бесплатно и там больше возможностей.
Если все-таки хочется плагин, то ставить так:
pip install https://api.github.com/repos/yandex-load/yatank-online/tarball/master

воскресенье, 2 июня 2019 г.

Создание корректных запросов для yandex.tank\phantom

Т.к. я только начинаю знакомиться с танком, возник еще один вопрос - как правильно задать ему запрос. Имеется локальный web-сервер, на нем крутиться небольшой сайт. К нему напрямую подключен сервер с танком. Нагрузка генерируется фантомом. Но апач постоянно выдает в логах ssl ошибку Invalid URI in request. Можете посоветовать, чем можно "вытащить" корректные запросы к сайту? wget? может быть, curl?
UPD
пример вывода answ.log
208 488 35886 852 0 HTTP/1.1 404 Not Found Date: Thu, 28 Jan 2016 13:39:50 GMT Server: Apache/2.4.6 (CentOS) Content-Length: 289 Connection: close Content-Type: text/html; charset=iso-8859-1 ERROR 404: Not Found. HTTP/1.1 400 Bad Request^M Date: Tue, 02 Feb 2016 10:56:39 GMT^M Server: Apache/2.4.6 (CentOS)^M Content-Length: 307^M Connection: close^M Content-Type: text/html; charset=iso-8859-1^M ^M 400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.


Apache/2.4.6 (CentOS) Server at 192.168.238.211 Port 443

366 488 35985 688 0 HTTP/1.1 200 OK Date: Thu, 28 Jan 2016 13:39:50 GMT Server: Apache/2.4.6 (CentOS) Last-Modified: Sat, 26 Jun 2010 09:38:02 GMT ETag: "369-489eba4cc1280" Accept-Ranges: bytes Content-Length: 873 Connection: close Content-Type: text/css 0K 100% 44,7M=0s HTTP/1.1 400 Bad Request^M Date: Tue, 02 Feb 2016 10:56:39 GMT^M Server: Apache/2.4.6 (CentOS)^M Content-Length: 307^M Connection: close^M Content-Type: text/html; charset=iso-8859-1^M ^M 400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.


Apache/2.4.6 (CentOS) Server at 192.168.238.211 Port 443

load.ini
[phantom] threads=60 phantom_path=/usr/bin/phantom phantom_modules_path=/usr/lib/phantom/ instances=5000 address=192.168.238.211 ;Target's address port=443 ;target's port rps_schedule=const(1000,30s) ;load scheme writelog=all gatling_ip=192.168.238.210 ;generator's network interface ammofile=https://192.168.238.211/ammo/ammo.txt ssl=1


Ответ

В комментах уже выяснили, что у вас неверный формат запросов, как нужно делать описано в документации
На практике наиболее используемые uri-style и request-style. Uri-style – это просто список uri в отдельном файле, опционально после uri через пробел можно задать тег, тогда будут дополнительные агрегаты по тегам; заголовки задаются в любом месте в [] и применяются ко всем последующим запросам:
[Connection: close] [Host: example.com] / /test?param=1
Если у вас только GET запросы - этого достаточно.
Чтобы слать запросы произвольного вида нужно использовать request-style, там содержимое запроса отправляется практически "как есть" исправляются только переводы строки в заголовках на
при необходимости, формат описан в документации
Собрать GET запросы можно по логам веб-сервера, с POST/PUT сложнее, если нужны они то, можно сделать генератор под конкретный сервис, узнав, что за данные в него нужно слать. Если нет хорошего описания, что за данные надо слать, можно посмотреть, что фактически отправляется - или через developer tools браузера или при помощи утилит для захвата трафика, например, wireshark (с https тут будут проблемы).