返回列表 发帖

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的,负载不行,  生成到上万个二级域名目录,运行时负载就死慢了。

百度排名王  就是这么干的。
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
★ 11月开空间新规则,百度GG收录百贴:http://idc866.com/thread-15155-1-1.html
★ 本站转型:推荐免费空间,收集免费空间,免费空间测试,并提供原创申请教程。
★ 免备案空间,免费空间,免费国外空间,国外免费空间,免费美国空间
★ 我们是一群辛勤的小站站长,我们需要团结,我们需要共同进步!!!!
★ 达要求开空间,论坛发申请贴后,请加QQ:876812422  (一般在线、有Q必回)

相关参考: 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
问题从而得以解决了!
★ 11月开空间新规则,百度GG收录百贴:http://idc866.com/thread-15155-1-1.html
★ 本站转型:推荐免费空间,收集免费空间,免费空间测试,并提供原创申请教程。
★ 免备案空间,免费空间,免费国外空间,国外免费空间,免费美国空间
★ 我们是一群辛勤的小站站长,我们需要团结,我们需要共同进步!!!!
★ 达要求开空间,论坛发申请贴后,请加QQ:876812422  (一般在线、有Q必回)

TOP

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 查看确认.)

★ 11月开空间新规则,百度GG收录百贴:http://idc866.com/thread-15155-1-1.html
★ 本站转型:推荐免费空间,收集免费空间,免费空间测试,并提供原创申请教程。
★ 免备案空间,免费空间,免费国外空间,国外免费空间,免费美国空间
★ 我们是一群辛勤的小站站长,我们需要团结,我们需要共同进步!!!!
★ 达要求开空间,论坛发申请贴后,请加QQ:876812422  (一般在线、有Q必回)

TOP

站长可以给下这个vds的购买地址吗,上千域名,站长做站群??
签名位........

TOP

不是嘛??我的vps安裝了kloxo,重啟後都只是佔用了不到110mb的內存(就是ram)。為什麼LNMP會使用更多的內存?理論上應該是沒可能的~
Ehost-HK - 由2010年8月一直运作至今的免费空间供应者!

TOP

不是嘛??我的vps安裝了kloxo,重啟後都只是佔用了不到110mb的內存(就是ram)。為什麼LNMP會使用更多的內存?理 ...
sam1414 发表于 2012-5-28 12:55



    不是单纯内存低就好,lnmp可以调的很低内存,但一跑起有流量的站你就知道了,就会挂。
签名位........

TOP

回复 5# sam1414


    Debian 6.0 x64    64位系统,基本是双倍占用。

而且现在上面没什么 数据库型站  不然  memcache  默认占用 64M。

还有从探针看,这VDS 跟XEN 或 KVM 型 内存 占用差不多吧。

像KVM 的一般安装系统后,显示30M左右真实占用内存。
★ 11月开空间新规则,百度GG收录百贴:http://idc866.com/thread-15155-1-1.html
★ 本站转型:推荐免费空间,收集免费空间,免费空间测试,并提供原创申请教程。
★ 免备案空间,免费空间,免费国外空间,国外免费空间,免费美国空间
★ 我们是一群辛勤的小站站长,我们需要团结,我们需要共同进步!!!!
★ 达要求开空间,论坛发申请贴后,请加QQ:876812422  (一般在线、有Q必回)

TOP

回复 4# xy1989


    fdcservers.net     注册时 需填信用卡信息,   

付款时,可选 PP + 银联卡付。      不知注册时 随便填一个信用卡可不可以。


速度的话,了还可以。   摆了一个月,刚开始的前几天 停机了 3小时左右吧。

一个多月一直没断机了。

样站探针:

  性能你可试试。
  这个下面的真实占用的才准确  40%占用

前两天折腾时重启了一下。     用来做垃圾堆的。
★ 11月开空间新规则,百度GG收录百贴:http://idc866.com/thread-15155-1-1.html
★ 本站转型:推荐免费空间,收集免费空间,免费空间测试,并提供原创申请教程。
★ 免备案空间,免费空间,免费国外空间,国外免费空间,免费美国空间
★ 我们是一群辛勤的小站站长,我们需要团结,我们需要共同进步!!!!
★ 达要求开空间,论坛发申请贴后,请加QQ:876812422  (一般在线、有Q必回)

TOP

返回列表