今天部署了一個nginx,web頁面訪問老是在報500錯誤(500 Internal Server Error錯誤),而後進入nginx的error.log裏發現一直在報Too Many open files. nginx
2018/08/21 10:07:35 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:35 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:36 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:36 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:37 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:37 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:38 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:38 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:39 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:39 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:40 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:40 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:41 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:41 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:42 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:42 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:43 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:43 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:44 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:44 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:45 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:45 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:46 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:46 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:47 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:47 [crit] 13508#13508: accept4() failed (24: Too many open files) 2018/08/21 10:07:48 [crit] 13508#13508: accept4() failed (24: Too many open files)
我猜估計是文件打開是超出系統設置的上限了,便登陸服務器查看了一下。web
運行以下命令,進行查看bash
[root@server nginx]$ ulimit -n 1024 [root@server nginx]$
發現只有1024。既然這麼小,那就修改一下。服務器
可是在修改以前咱們先確認一下系統的上限是多少dom
[root@server nginx]# sysctl -n -e fs.file-max 13057331 [root@server nginx]#
既然有這麼多,我就不擔憂了,我要的其實也很少。ide
開始修改打開文件數量的上限,在/etc/security/limits.conf文件裏,最後加上this
* soft nofile 10240
* hard nofile 10240spa
# /etc/security/limits.conf # #This file sets the resource limits for the users logged in via PAM. #It does not affect resource limits of the system services. # #Also note that configuration files in /etc/security/limits.d directory, #which are read in alphabetical order, override the settings in this #file in case the domain is the same or more specific. #That means for example that setting a limit for wildcard domain here #can be overriden with a wildcard setting in a config file in the #subdirectory, but a user specific setting here can be overriden only #with a user specific setting in the subdirectory. # #Each line describes a limit for a user in the form: # #<domain> <type> <item> <value> # #Where: #<domain> can be: # - a user name # - a group name, with @group syntax # - the wildcard *, for default entry # - the wildcard %, can be also used with %group syntax, # for maxlogin limit # #<type> can have the two values: # - "soft" for enforcing the soft limits # - "hard" for enforcing hard limits # #<item> can be one of the following: # - core - limits the core file size (KB) # - data - max data size (KB) # - fsize - maximum filesize (KB) # - memlock - max locked-in-memory address space (KB) # - nofile - max number of open file descriptors # - rss - max resident set size (KB) # - stack - max stack size (KB) # - cpu - max CPU time (MIN) # - nproc - max number of processes # - as - address space limit (KB) # - maxlogins - max number of logins for this user # - maxsyslogins - max number of logins on the system # - priority - the priority to run user process with # - locks - max number of file locks the user can hold # - sigpending - max number of pending signals # - msgqueue - max memory used by POSIX message queues (bytes) # - nice - max nice priority allowed to raise to values: [-20, 19] # - rtprio - max realtime priority # #<domain> <type> <item> <value> # #* soft core 0 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #@student - maxlogins 4 * soft nofile 10240 * hard nofile 10240 # End of file
而後退出登陸,再進去查看下發現已經設置好了code
[root@server nginx]$ ulimit -n 10240 [root@server nginx]$
而後重啓nginx,應該就行了orm