Nginx

AWS Elastic Beanstalk - 在給定時間超過 300 個連接時 Puma 伺服器上的套接字故障

  • March 29, 2018

我一直在處理 AWS Elastic Beanstalk 環境中的一個可以說是奇怪的問題。當給定時間單個實例上有超過 300 個連接時,我收到以下 nginx 錯誤:

2018/03/23 20:56:53

$$ error $$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"

EC2 實例上的 nginx 配置似乎正確設置了套接字(EBS 提供的預設 nginx 配置)。

所以是的,我不知道是什麼原因造成的。有任何想法嗎?謝謝!

很好地解決問題和配置失敗與超出資源限制有關。可能是兩個作業系統資源:

  • 打開文件描述符
  • 單個使用者可用的程序。只是為了消除程序限制,將您在 EC2 實例中的 nproc 值保持在非常高的值或無限制。

須藤 vi /etc/security/limits.conf

請參閱此連結以獲取簡短的想法。因此,由於您的 worker_rlimit_nofile 不能超過伺服器上設置的 ulimit,因此首先要計算 nginx 參數並根據要求進行調整:

我們可以服務worker_processes * worker_connections / ( keepalive_timout * 2 ) users per second

這個縮放指南可以幫助你量化你應該增加和定義的值。完成為 Web 伺服器定義值後,您需要使用更高或相等的值更新限制。檢查伺服器可以幫助您擴大規模的使用者並發性。

引用自:https://serverfault.com/questions/904322