Size: a a a

2020 June 18

АР

Александр Руснак... in LoadLand
А сейчас достаточно любой скрипт записать по типу просто зайди на сайт и выйди и запустить его после чего такая реакция происходит
источник

MD

Mikhail Dyomin in LoadLand
Александр Руснак
Абсолютно такой же причем паузы были 300 миллисекунд и то не везде
Так вы тест поменяли или сервер?
источник

АР

Александр Руснак... in LoadLand
Mikhail Dyomin
А вот второе уже хуже - совсем не уходит или просто какое-то время держится? Может ломается сервер, может просто очередь копит, например на прокси или в принимающем коннекты треде
Совсем не уходит помогает только перезагрузка
источник

MD

Mikhail Dyomin in LoadLand
Александр Руснак
Совсем не уходит помогает только перезагрузка
А при ручной проверке отвечает? Логи смотрели?
источник

АР

Александр Руснак... in LoadLand
Mikhail Dyomin
Так вы тест поменяли или сервер?
Уточню тестов несколько до определенного момента веб сервер не давал такой реакции
источник

АР

Александр Руснак... in LoadLand
Mikhail Dyomin
А при ручной проверке отвечает? Логи смотрели?
Отвечает, но ответы на запросы отдает очень долго
источник

MD

Mikhail Dyomin in LoadLand
Александр Руснак
Уточню тестов несколько до определенного момента веб сервер не давал такой реакции
Короче, не меняйте две вещи сразу, верните старый тест
источник

MD

Mikhail Dyomin in LoadLand
Александр Руснак
Отвечает, но ответы на запросы отдает очень долго
А нагрузка точно снимается, кстати? По access логу проверяли?
источник

АР

Александр Руснак... in LoadLand
Mikhail Dyomin
А нагрузка точно снимается, кстати? По access логу проверяли?
По нему не проверял, судил по графане и загрузке серверов приложений
источник

АР

Александр Руснак... in LoadLand
И прочим метрикам
источник

MD

Mikhail Dyomin in LoadLand
Вообще я бы сделал так:
1) сравнил rps когда было нормально и сейчас, если стало сильно больше - вот отсюда и копать - вероятно копится большая очередь
2) сделал минимальный воспроизводящий тест, лучше из одного простого запроса
3) если удалось воспроизвести залипание на 100%проца без накопленной очереди - идти смотреть что залипло дампом тредов/профайлером/ещё как-нибудь
источник

АР

Александр Руснак... in LoadLand
И тут бывает что происходит плавный рост графиков показателей стенда при 100 % загрузке веб сервера, а бывает что веб сервер загружается на 100% и все остальные сервера перестают чувствовать нагрузку, а время ответа на запросы становится огромным
источник

АР

Александр Руснак... in LoadLand
Mikhail Dyomin
Вообще я бы сделал так:
1) сравнил rps когда было нормально и сейчас, если стало сильно больше - вот отсюда и копать - вероятно копится большая очередь
2) сделал минимальный воспроизводящий тест, лучше из одного простого запроса
3) если удалось воспроизвести залипание на 100%проца без накопленной очереди - идти смотреть что залипло дампом тредов/профайлером/ещё как-нибудь
Спасибо за совет!
источник
2020 June 23

AE

Andrey Enshin in LoadLand
Привет!

Стреляю фантомом из танка, попросил 200 QPS.
Вижу в netstat: 5 сокетов established и 1 time_wait. Кажется, через них весь трафик.

Стреляю jmeter'ом из его GUI, попросил 7 клиентов.
Вижу в netstat: 7 сокетов established, каждый раз пересоздаются. Кажется, на каждый запрос - новый коннект со всеми хэндшейками.

Вопросы:
1) Почему фантом использует одни и те же сокеты а jmeter нет (ни одного ни другого я не просил keep-alive) ?
2) Как попросить фантом устанавливать соединение при каждом запросе и делать tcp и tls хендшейк?
источник

AE

Andrey Enshin in LoadLand
Хм. Добавил заголовок Connection: close, подсмотрел в то, что шлёт jmeter и нашёл ответы на свои вопросы : )
источник

AE

Andrey Enshin in LoadLand
Но есть новый вопрос.
Кликнул галку Use KeepAlive в jmeter, появился заголовок Connection: keep-alive в запросах. Значительно подрос QPS. Что ожидаемо.

Однако netstat мне всё равно показывает, что сокеты пересоздаются.
Смотрю так: watch -d 'netstat -tn | grep -F 1.1.1.1'

Почему даже при keep-alive сокеты пересоздаются?
источник

MT

Mikhail Timofeev in LoadLand
Как минимум это keep-alive для http, а не для tcp
источник

AE

Andrey Enshin in LoadLand
Да, конечно, http.
HTTP keep-alive, насколько понимаю, помогает договориться клиенту и серверу, чтобы они крепко держали tcp соединение и не отпускали после завершения запроса, чтобы для последующих запросов не тратить ресурсы на установление нового соединения. А это дорого, особенно в случае TLS.

TCP keep-alive - это сообщение, которое периодически шлётся, чтобы проверить целостность соединения и поддержать его в живом состоянии ибо таймауты.
источник

MT

Mikhail Timofeev in LoadLand
источник

AE

Andrey Enshin in LoadLand
Кажется, сервер тоже должен ответить мне Connection: keep-alive , а я этого не вижу. Наверное, в этом причина постоянного пересоздания сокетов.

Хотя, почему-то QPS заметно подрос.

Могу объяснить это теорией: сервер, будучи балансером, установил подключение к бекенду воспользовавшись моим заголовком Connection: keep-alive, а обратно не пробросил такой же заголовок от приложения. В итоге клиент страдает и балансер немного тоже.
источник