AWS Elastic Beanstalk — сбой сокета на сервере Puma при наличии более 300 подключений в определенный момент времени

AWS Elastic Beanstalk — сбой сокета на сервере Puma при наличии более 300 подключений в определенный момент времени

Я столкнулся с, возможно, странной проблемой в среде AWS Elastic Beanstalk. Я получаю следующую ошибку nginx, когда на одном экземпляре одновременно находится более 300 подключений:

2018/03/23 20:56:53 [ошибка] 5431#0: *4121 connect() к unix:///var/run/puma/my_app.sock не удалось (11: Ресурс временно недоступен) при подключении к восходящему потоку, клиент:

решение1

Хорошо разбираясь в проблеме и конфигурациях, сбой связан с превышением лимита ресурсов. Возможно, два ресурса ОС:

  • открытые файловые дескрипторы
  • процессы, доступные одному пользователю. Просто чтобы устранить ограничение процесса, сохраните значение nproc в экземпляре EC2 на очень высоком уровне или без ограничений.

    sudo vi /etc/security/limits.conf

Ссылатьсяэта ссылкадля краткой идеи. Так как вы не можете иметь worker_rlimit_nofile больше, чем ulimit, установленный на сервере, первым подходом будет вычисление параметров nginx и настройка в соответствии с требованиями:

Мы можем служить worker_processes * worker_connections / ( keepalive_timout * 2 ) users per second.

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

Связанный контент