Nginx

我應該設置多少值來解決 Nginx 上打開文件過多的錯誤?

  • March 7, 2022

我在 Nginx 伺服器(v 1.21.6)上執行 wordpress 網站。

最近我看到如下錯誤。

2022/03/07 19:43:41 [crit] 563445#563445: accept4() failed (24: Too many open files)
2022/03/07 19:43:42 [crit] 563445#563445: accept4() failed (24: Too many open files)

我重新啟動 Nginx,網站訪問正常。

然後,我用Google搜尋來解決這個問題,很多教程和價值觀都讓我感到困惑。

我的系統資訊

ulimit -Hn
1048576
ulimit -Sn
1024

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7581
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7581
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

然後我將以下值添加到 /etc/sysctl.conf。

fs.file-max = 70000

這解決了我所有的問題嗎?

如果不是這種情況,我很想听聽一些關於是否應該添加其他設置的建議。

謝謝你。

我將以下值添加到 /etc/sysctl.conf。

fs.file-max = 70000

sysctl命令用於在執行時修改核心參數。它可以將單個參數作為參數,即sysctl fs.file-max讀取參數的目前值或例如sysctl fs.file-max=98036設置該值,或sysctl -p /path/to/file從文件中讀取參數。

該文件/etc/sysctl.conf(和其他一些文件)是核心參數的預設預載入/配置文件。

簡單地更改該文件不會影響任何更改。

您將需要重新啟動或執行[sudo] sysctl --system以在此處應用更改的設置。


ulimit命令獲取/設置核心對特定使用者或程序實施的資源限制。


儘管您可以設置*“無限制”*ulimit或更現實的資源限制,但仍然具有超過相關核心參數的值,這樣做不會發生這種情況。

系統資源有限,當有這樣的核心參數時,這將是可用的上限。

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