按照网上的 方法,我安装配置了 nginx,我用 nginx 来做图片服务器,
具体步骤 http://my.oschina.net/foxidea/blog/90776
图片服务器 分为 源服务器和 缓存服务器,上传图片到源服务器上,用户访问图片,访问的是 缓存服务器
缓存服务器是 centos + nginx
缓存服务器上用了 nginx 的proxy 模块 去访问源服务器,并把图片缓存起来
具体步骤http://my.oschina.net/foxidea/blog/91410
我配置成功之后,第一天白天没问题,到了晚上 公司的人反应出现问题,源服务器图片上传成功,但是 缓存服务器无法查看图片
我把 查看nginx 的错误日志 /usr/local/nginx/logs/error.log
如下:
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:
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 不够熟悉,连 分区都不太懂