Я столкнулся с, возможно, странной проблемой в среде AWS Elastic Beanstalk. Я получаю следующую ошибку nginx, когда на одном экземпляре одновременно установлено более 300 подключений:
2018/03/23 20:56:53 [ошибка] 5431 # 0: * 4121 connect () to unix: ///var/run/puma/my_app.sock не удалось (11: ресурс временно недоступен) при подключении к восходящему потоку, клиент: 🐙, сервер: _, запрос: "GET / api / v1 / podcasts / HTTP / 1.1", восходящий поток: "http: // unix: ///var/run/puma/my_app.sock: / api / v1 / podcasts /", хост: 🐙
В моей конфигурации Puma есть
bind "unix:///var/run/puma/my_app.sock"
И в конфигурации nginx на экземпляре EC2, похоже, правильно настроен сокет (конфигурация nginx по умолчанию, предоставленная EBS).
Так что да, я понятия не имею, чем это вызвано. Любые идеи? Спасибо!
Хорошо разбираясь в проблеме и конфигурациях, сбой связан с превышением лимита ресурсов. Возможно два ресурса ОС:
sudo vi /etc/security/limits.conf
Обратитесь эта ссылка для краткого представления. Итак, поскольку у вас не может быть worker_rlimit_nofile больше, чем ulimit, установленный на сервере, первым подходом будет вычисление параметров nginx и настройка в соответствии с требованиями:
Мы можем служить
worker_processes * worker_connections / ( keepalive_timout * 2 ) users per second
.
Это руководство по масштабированию может помочь вам в количественной оценке значений, которые вам следует увеличить и определить. После того, как вы закончите определение значений для своего веб-сервера, вам нужно будет обновить пределы, установив более высокие или равные значения. Проверьте, до какой степени параллелизма пользователей работает сервер, чтобы помочь вам выполнить масштабирование.