标题: LNMP添加上千个域名后出问题的解决方法。 failed (24: Too many open files [打印本页]
作者: idc886 时间: 2012-5-27 17:02 标题: LNMP添加上千个域名后出问题的解决方法。 failed (24: Too many open files
环境:
丹佛 VDS 384M/(SWAP 2G)50G硬盘/5M带宽/5IP/1CPU/$9/月 下载速度 600K
Debian 6.0 x64 10分钟前升级完系统内核 总共30分钟装好 LNMP一键安装包
LNMP一键安装包 nginx/1.1.19 + PHP 5.3.10 + eAccelerator0.9.6.1 + memcache
探针检测真实内在占用 32% ,大概120M左右 空载。
使用命令:/root/vhost.sh 一个一个地添加上千个域名后,问题来了:
不知是添加到多少个,启动出现这问题: (因为添加时没注意。一直在添加)
root@vds:~# /etc/init.d/nginx start
Starting nginx daemon: nginxnginx: [emerg] could not build the server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size: 128
nginx already running.
最后解决办法是:
根据提示修改 /usr/local/nginx/conf/nginx.conf 文件里的
修改为:server_names_hash_bucket_size 512; 默值为128。
修改后,执行 /root/lnmp restart ,上面错误消失,但出现下面的错误。
root@vds:~# /etc/init.d/nginx start
Starting nginx daemon: nginxnginx: [emerg] open() "/home/wwwlogs/www.idc866.com.log" failed (24: Too many open files)
nginx already running.
先偿试SFTP里删除 /local/nginx/conf/vhost/ 下的域名文件数,到 1030左右,
再重启后就无这错误了。把 域名文件个数再增加后, 还是这样的错误提示,
修改 /usr/local/nginx/conf/nginx.conf 文件里的
网上说修改 worker_rlimit_nofile 65535; 值,
但 LNMP 的一键安装包 里的默认值为 51200; 并没有相差多少。
按网上教程,在SSH里执行: ulimit -n 56636 后,
重启 nginx , nginx 即可正常运行了。
最后,把 /etc/init.d/nginx 里添加上 ulimit -n 56636
以便使 VPS启动后,就执行 ulimit -n 56636
1.打开nginx的启动脚本(一般位于/etc/init.d/nginx)
在#!/bin/bash下面一行添加如下内容:
ulimit -n 56636
这样修改后,自动运行nginx,自动执行ulimit -n 56636 ,
重启VPS都没问题了。。
看来,我们的VPS都得加大这个参数了,免得他成了瓶颈!
----------------------
中间还出现了这样的问题:
root@vds:~# /etc/init.d/nginx start
Restarting nginx daemon: nginxnginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
大概意思就是说80端口被占用了,解决办法就是杀掉nginx进程 然后重启nginx
出现这样的,你添加,绑定域名,都不生效,得先停止 nginx ,再启动 nginx 就可以了。
还出现了这样的错误:
root@vds:~# /etc/init.d/nginx start
Starting nginx daemon: nginxnginx: [emerg] no "events" section in configuration
nginx already running.
而且中间有一段时间 内存占用 80%, 负载 0.3左右。
到最后,这些错误都没了。。 内存占用、负载,都恢复正常。
目前 添加了 1160多个域名, 内存占用30%,负载0。
用来做垃圾站,的单页、二级域名,百度还没收录几个,没流量。
LNMP 绑域名麻烦, 更稳定,负载更好。
WIN的 使用 Rewrite 组件,可实现批量绑域名,无需操作添加。
但WIN的,负载不行, 生成到上万个二级域名目录,运行时负载就死慢了。
百度排名王 就是这么干的。
作者: idc886 时间: 2012-5-27 17:26
相关参考: http://hi.baidu.com/liheng_2009/item/a5fd8e4afe7cc5a5de2a9fdc
nginx:accept() failed (24: Too many open files)解决方法 2010-05-26 08:59
有一台服务器访问量非常高,使用的是nginx ,错误日志不停报以下错误:
2010/05/26 08:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2010/05/26 08:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
解决方法:
centos5.3 中 ulimit -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连接过多的问题,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
星号代表全局, soft为软件,hard为硬件,nofile为这里指可打开文件数。
把以上两行内容加到 limits.conf文件中即可。
另外,要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:
session required /lib/security/pam_limits.so
修改完重新登录就可以见到效果,可以通过 ulimit -n 查看。
参考:
http://gfllove.blog.163.com/blog/static/1515027200923010653628/
http://loamy.javaeye.com/blog/380150
Nginx提示accept() failed (24: Too many open files) while accepting new connection
http://www.whypc.info/2011/01/too_many_open/ 2011年01月16日
不日,在维护服务器:升级操作系统内核之后发现访问web页面的时候提示500错误。服务器类型为nginx+apache,尝试访问apache 端口没有问题,于是问题锁定在可能是NGINX发生问题了。在查看日志之后发现了大量的错误提示:accept() failed (24: Too many open files) while accepting new connection
回忆之前做过的一些虚拟主机的配置想到在配置中经常出现“ulimit”相关的配置。于是对服务器的更改如下:
1.打开nginx的启动脚本(一般位于/etc/init.d/nginx)
在#!/bin/bash下面一行添加如下内容:
ulimit -n 56636
2.打开nginx的配置文件(一般位于/usr/local/nginx/conf/nginx.conf)
在worker_processes下面一行添加如下内容:
worker_rlimit_nofile 65535;
3.重启nginx服务
/etc/init.d/nginx restart
问题从而得以解决了!
作者: idc886 时间: 2012-5-27 17:40
ulimit值(Linux文件句柄数量)在Centos5(RHEL5)中的调整
http://loamy.iteye.com/blog/380150 2009-05-06 14:39
在Linux下面部署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题,比如还有Squid做代理,当文件打开数到900多时速能就非常快的下降,有可能打不开网页.
其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量.
查看方法
我们可以用ulimit -a来查看所有限制值
[root@centos5 ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
max nice (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 4096
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
max rt priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited||<
其中 "open files (-n) 1024 "是Linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的SOCKET数量,可影响MySQL的并发连接数目).这个值可用ulimit命令来修改,但ulimit命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效.
系统总限制是在这里,/proc/sys/fs/file-max.可以通过cat查看目前的值,修改/etc/sysctl.conf 中也可以控制.
另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量
查找文件句柄问题的时候,还有一个很实用的程序lsof.可以很方便看到某个进程开了那些句柄.也可以看到某个文件/目录被什么进程占用了.
修改方法
若要令修改ulimits的数值永久生效,则必须修改配置文档,可以给ulimit修改命令放入/etc/profile里面,这个方法实在是不方便,还有一个方法是修改/etc/sysctl.conf .我修改了,测试过,但对用户的ulimits -a 是不会改变的。只是/proc/sys/fs/file-max的值变了.(我给命令放到rc.local中失败)
我认为正确的做法,应该是修改/etc/security/limits.conf
里面有很详细的注释,比如
* soft nofile 32768
* hard nofile 65536
也可以直接运行下面这个shell。直接copy到你的终端中运行就好了.
echo -ne "
* soft nofile 65536
* hard nofile 65536
" >>/etc/security/limits.conf
就可以将文件句柄限制统一改成软32768,硬65536.配置文件最前面的是指domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制
注意.这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning.其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软
默认显示的是软限制,如果运行ulimit命令修改的时候没有加上的话,就是两个参数一起改变.
生效
修改完重新登录就可以见到.(我的系统是Centos5.1.修改了,重新登录后就立刻生效.可以用ulimit -a 查看确认.)
作者: xy1989 时间: 2012-5-28 12:25
站长可以给下这个vds的购买地址吗,上千域名,站长做站群??
作者: sam1414 时间: 2012-5-28 12:55
不是嘛??我的vps安裝了kloxo,重啟後都只是佔用了不到110mb的內存(就是ram)。為什麼LNMP會使用更多的內存?理論上應該是沒可能的~
作者: xy1989 时间: 2012-5-28 16:18
不是嘛??我的vps安裝了kloxo,重啟後都只是佔用了不到110mb的內存(就是ram)。為什麼LNMP會使用更多的內存?理 ...
sam1414 发表于 2012-5-28 12:55
不是单纯内存低就好,lnmp可以调的很低内存,但一跑起有流量的站你就知道了,就会挂。
作者: idc886 时间: 2012-5-28 21:29
回复 5# sam1414
Debian 6.0 x64 64位系统,基本是双倍占用。
而且现在上面没什么 数据库型站 不然 memcache 默认占用 64M。
还有从探针看,这VDS 跟XEN 或 KVM 型 内存 占用差不多吧。
像KVM 的一般安装系统后,显示30M左右真实占用内存。
作者: idc886 时间: 2012-5-28 21:46
回复 4# xy1989
fdcservers.net 注册时 需填信用卡信息,
付款时,可选 PP + 银联卡付。 不知注册时 随便填一个信用卡可不可以。
速度的话,了还可以。 摆了一个月,刚开始的前几天 停机了 3小时左右吧。
一个多月一直没断机了。
样站探针:
性能你可试试。
这个下面的真实占用的才准确 40%占用
前两天折腾时重启了一下。 用来做垃圾堆的。
欢迎光临 免费国外空间,国外免费空间, (http://idc866.com/) |
Powered by Discuz! 7.2 |