按照網上的 方法,我安裝配置了 nginx,我用 nginx 來作圖片服務器, linux
具體步驟 http://my.oschina.net/foxidea/blog/90776 nginx
圖片服務器 分爲 源服務器和 緩存服務器,上傳圖片到源服務器上,用戶訪問圖片,訪問的是 緩存服務器 centos
緩存服務器是 centos + nginx 緩存
緩存服務器上用了 nginx 的proxy 模塊 去訪問源服務器,並把圖片緩存起來 服務器
具體步驟http://my.oschina.net/foxidea/blog/91410 session
我配置成功以後,第一天白天沒問題,到了晚上 公司的人反應出現問題,源服務器圖片上傳成功,可是 緩存服務器沒法查看圖片 socket
我把 查看nginx 的錯誤日誌 /usr/local/nginx/logs/error.log ide
以下: 網站
2012/11/23 12:40:34 [crit] 1366#0: accept4() failed (24: Too many open files)
2012/11/23 12:40:34 [alert] 1366#0: *4172 socket() failed (24: Too many open files) while connecting to upstream, client: ui
google baidu 了一番
網上說
centos5.3 中 ulimit -n 爲1024, 當Nginx鏈接數超過1024時,error.log中就出現如下錯誤:
[alert] 12766#0: accept() failed (24: Too many open files)
解決方法是:
修改/etc/security/limits.conf
在 /etc/security/limits.conf 中加入如下內容:
* soft nofile 655360
* hard nofile 655360
星號表明全局, soft爲軟件,hard爲硬件,nofile爲<type>這裏指可打開文件數。
另外,要使 limits.conf 文件配置生效,必需要確保 pam_limits.so 文件被加入到啓動文件中。查看 /etc/pam.d/login 文件中有:
session required /lib/security/pam_limits.so
修改完從新登陸就能夠見到效果,能夠經過 ulimit -n
而後再修改 /usr/local/nginx/conf/nginx.conf
而後重啓 nginx 彷佛沒什麼問題了
沒過兩個小時同事反應又有問題,圖片又沒法打開了
查看錯誤日誌(/usr/local/nginx/logs/error.log) 全是以下內容:
2012/11/24 10:58:19 [crit] 4570#0: *86 pwrite() "/www/i1.xx.com/0000000011" failed (28: No space left on device) while reading upstream,
又百度 google 了一番,說讓使用 df 命令 查看下磁盤空間
果然 發現 /dev/sda1 磁盤 use 100% ,難怪了我把 網站 放入 /www/ 下 磁盤空間被佔用滿了
而後發現 /home/ use 僅有 1% 佔用,Available 值最大
後來把網站 創建在 /home/www/ 下 問題解決了
之因此遇到這麼多問題,主要是對 linux 不夠熟悉,連 分區都不太懂