Назад | Перейти на главную страницу

Как оживить nginx после того, как его побили стресс-тесты

Задний план

У меня есть два экземпляра ec2, на которых запущено приложение laravel на сервере nginx за балансировщиком нагрузки. У нас возникла блестящая идея запустить стресс-тестирование на экземплярах с использованием apache ab следующим образом:

 ab -c 350 -n 20000  -H "Accept:application/x.toters.v1+json" http://staging-load-balancer-2088007710.eu-west-1.elb.amazonaws.com/api?store_ids[]=223%26lat=33.883666%26lon=35.533966
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking staging-load-balancer-2088007710.eu-west-1.elb.amazonaws.com (be patient)
Completed 2000 requests
Completed 4000 requests
Completed 6000 requests
Completed 8000 requests
Completed 10000 requests
Completed 12000 requests
Completed 14000 requests
apr_socket_recv: Connection reset by peer (104)
Total of 15912 requests completed

так что кажется, что он бросил полотенце ближе к концу, запуск стресс-тестов снова просто умирает немедленно.

Вопрос

Проблема в том, что теперь, если мы попытаемся связаться с экземплярами (обойдя балансировщик нагрузки, чтобы изолировать проблему), он просто вылетит, см. Вывод почтальона:

и журналы ошибок nginx показывают:

2017/11/28 13:27:41 [alert] 321#321: *120606 open socket #16 left in connection 163
2017/11/28 13:27:41 [alert] 321#321: *120629 open socket #34 left in connection 188
2017/11/28 13:27:41 [alert] 321#321: *120622 open socket #9 left in connection 213
2017/11/28 13:27:41 [alert] 321#321: *120628 open socket #25 left in connection 217
2017/11/28 13:27:41 [alert] 321#321: *120605 open socket #15 left in connection 244
2017/11/28 13:27:41 [alert] 321#321: *120614 open socket #41 left in connection 245
2017/11/28 13:27:41 [alert] 321#321: *120631 open socket #24 left in connection 255
2017/11/28 13:27:41 [alert] 321#321: *120616 open socket #23 left in connection 258
2017/11/28 13:27:41 [alert] 321#321: *120615 open socket #42 left in connection 269
2017/11/28 13:27:41 [alert] 321#321: aborting

перезапуск nginx не исправил это, выключение и включение nginx не исправили. Идеи?

После сбора любых данных из теста, которые вы хотите сохранить, осушите и уничтожьте экземпляры и создайте новые.

С заведомо хорошим шаблоном для масштабируемого приложения нет необходимости в исправлении отдельного хоста. Если, возможно, вы не думаете, что есть проблема с его настройкой, или не хотите потратить время на изучение.