1. 打开文件数量限制
系统总共可以打开的文件数
因为服务器的资源是有限的,所以Linux对打开的文件数做了限制;包括系统总共可以打开的文件数,单个用户/组别可以打开的文件数,单个进程可以打开的文件数等
对于系统总共可以打开的文件数,应该是系统根据系统硬件资源自动计算出来的,查看几个系统值都很大,一般不需要我们操心了,如果实在要改,请在/etc/sysctl.conf文件下面加上:
# Controls the maximum number of open-files by whole system
fs.file-max = 6550236
然后执行sysctl -p命令
cat /proc/sys/fs/file-max
6550236
此时整个系统所可以打开的文件总数为6550236

单个进程可以打开的文件数
当前单个进程可以打开的文件数可以通过ulimit -n [N]进行显示/设置
许多系统默认为1024,如果你的应用程序为高并发网络服务就很有可能超过1024个连接(还不包括已经打开的其他文件)
所以你可以使用ulimit -n 10240来临时改变最大文件打开数;
但是记住,这个命令只是临时性的,不但重启后无效,而且对于另外一个会话也是无效的;所以我们一般有两种方式对这个限制进行处理:
1. 将上面命令放到某个启动脚本使其在自己的服务程序前开启
2. 修改/etc/security/limits.conf(一般都在这个位置),在尾部增加下面内容
* soft nofile 10240
* hard nofile 10240
记住这个是需要重启系统的

2. socket等待队列数量限制
somaxconn参数控制的是socket监听队列中的socket数量,在Centos6.5是128,对于要运行大并发服务程序的服务器而言往往是不够的,将他修改成2048或者更多
sysctl配置与显示在/proc/sys目录中的内核参数.用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。
命令格式:
sysctl [-n] [-e] -w variable=value
sysctl [-n] [-e] -p (default /etc/sysctl.conf)
sysctl [-n] [-e] -a
常用参数的意义:
-w 临时改变某个指定参数的值,系统重启将失效,如
sysctl -w net.core.somaxconn=2048
PS: echo 2048 > /proc/sys/net/core/somaxconn跟上面的命令完成了同样的功能
-a 显示所有的系统参数
-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
比如在/etc/sysctl.conf中加入: net.core.somaxconn=2048,再执行sysctl -p

Logo

更多推荐