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