nginx worker_connections are not enough(錯誤)


最近看nginx error_log 中出現worker_connections are not enough(錯誤),整理一下解決過程

1 worker_connections
這個問題與下面兩個重要的參數有關:

句法: worker_connections number;
默認: worker_connections 512;
語境: events

設置工作進程可以打開的最大並發連接數。
應該記住,這個數字包括所有連接(例如與代理服務器的連接等,有反向代理鏈接數就會有相應增加),而不僅僅是與客戶端的連接。另一個考慮因素是,同時連接的實際數量不能超過打開文件的最大數量的當前限制,可以通過worker_rlimit_nofile更改。

句法: worker_rlimit_nofile number;
默認: -
語境: main

更改RLIMIT_NOFILE工作進程的最大打開文件數量限制()。用於在不重新啟動主進程的情況下增加限制。

這個錯誤的原因即為:worker_connections 大於打開文件的最大數量的當前限制
配置為該種方式即可解決問題:

worker_rlimit_nofile 65535;
events {
worker_connections 10240;
}

當然也可以通過直接修改linux 系統配置來更改最大打開文件數

2 修改linux文件句柄限制
在Linux下面部署應用的時候,有時候會遇上Socket/File: Can’t open so many files的問題,因為Linux有文件句柄限制的,默認僅僅為1024,所以我們需要對它進行一定的修改,才能支持nginx的連接數。

我們可以使用ulimit -a命令查看Linux相關限制
可以看到open files (-n) 1024
即linux 默認最大打開文件數為1024
對於臨時測試我們可以使用ulimit -n Number 修改最大文件句柄限制,但該種修改方式僅僅對當前session有效。

永久生效方案

vi /etc/security/limits.conf
在limits.conf中添加以下參數

  • soft nofile 40960
  • hard nofile 65536

參數:

  • 代表所有用戶有效
    soft:軟限制,超過會報warn
    hard:實際限制
    nofile:文件句柄參數
    number:最大文件句柄數

修改完成保存后,退出ssh再次登錄,使用ulimit -n 就可以看到open files 參數已經改變成功了。

參考鏈接
https://www.cnblogs.com/ibook360/archive/2012/05/11/2495405.html
————————————————

原文
https://blog.csdn.net/m0_37263637/article/details/80813881


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM