轉載請註明出處:http://blog.csdn.net/l1028386804/article/details/51425325
有一台伺服器存取量非常高,使用的是nginx ,錯誤日誌不停報以下錯誤:
2016/05/16 08:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2016/05/16 08 :53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2016/05/16 08:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2016/05/16 08:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2016/05/16 08:53:498:53: [alert] 13576#0: accept() failed (24: Too many open files)
2016/05/16 08:53:49 [alert] 13576#0: accept() failed (24: Too many )
2016/05/16 08:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2016/05/16 08:53:49 [alert>2016/05/16 08:53:49 [alert] #0: accept() failed (24: Too many open files)
2016/05/16 08:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2016/05/16 08:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
解決方法:
解決方法:
centos5.3 中n 為1024, 當Nginx連線數超過1024時,error.log中就出現以下錯誤:
[alert] 12766#0: accept() failed (24: Too many open files)使用ulimit -n 655350 可以把開啟檔案數設定夠大, 同時修改nginx.conf , 新增worker_rlimit_nofile 655350;(與error_log同等級)
這樣就可以解決Nginx連線過多的問題,Nginxx就可以支援高並發。 還要修改nginx
>
另外, ulimit -n 也會影響mysql 的並發連線數。把他提高,也就提高了mysql並發。
注意: 用ulimit -n 2048 修改只對目前的shell有效,退出後失效。
修改方法若要令修改ulimits的數值永久生效,則必須修改配置文件,可以給ulimit修改命令放入/etc/profile裡面,這個方法實在是不方便,
還有一個方法是修改
/etc/security/limits.conf/etc/security/limits.conf 格式,檔案裡面有很詳細的註解,例如
* soft nofile 655360
* hard nofile 655360星號代表硬件,nofile為這裡指可開啟檔案數。
把以上兩行內容加到 limits.conf檔案中即可。 另外,要使 limits.conf 檔案設定生效,必須確保 pam_limits.so 檔案被加入到啟動檔案中。查看/etc/pam.d/login 檔案中有:
session required /lib/security/pam_limits.so修改完重新登入就可以看到效果,可以透過ulimit -n 查看。 以上就介紹了Nginx之——nginx:accept failed 24: Too many open files,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。