按照网上的 方法,我安装配置了 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 不够熟悉,连 分区都不太懂