系统打开文件数修改
第一步 修改/etc/security/limits.conf文件
在文件中添加如下行: * soft nofile 65536
* hard nofile 65536
* soft noproc 16384
* hard noproc 16384
用’*'号表示修改所有用户的限制;soft或hard指定要修改软限制还是硬限制;65536则指定了想要修改的新的限制值,即最大打开文件数(请注意软限制值要小于或等于硬限制)。修改完后保存文件。
第二步 修改/etc/pam.d/login文件
在文件中添加如下行: session required /lib/security/pam_limits.so这是告诉Linux在用户完成系统登录后,应该调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制),而pam_limits.so模块就会从/etc/security/limits.conf文件中读取配置来设置这些限制值。修改完后保存此文件。
TCP连接的有关限制
系统文件/etc/sysctl.conf文件保留如下设置,其他进行注释
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1 # 表示开启 SYN Cookies 。当出现 SYN 等待队列溢出时,启用 cookies 来处理,可防范少量 SYN ***,默认为 0 ,表示关闭;
- tcp 0 0 172.31.1.101:7002 101.228.32.220:4630 SYN_RECV
当出现上面很多这样的状态时候,可以考虑启用以上参数
net.ipv4.tcp_tw_reuse = 1 #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
- tcp 0 0 172.31.1.101:15843 172.31.1.103:7002 TIME_WAIT
当出现上面很多这样的状态时候,可以考虑启用上面两项设置
net.ipv4.tcp_fin_timeout = 30 #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间,30秒以后就断开连接
如果服务器有大量的以下状态信息
- tcp 0 0 172.31.1.101:7002 218.108.5.242:34051 FIN_WAIT2
就可以考虑启用上面的配置选项了
net.ipv4.tcp_keepalive_time = 1200 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。 net.ipv4.ip_local_port_range = 1024 65000 #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。 net.ipv4.tcp_max_tw_buckets = 5000 #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字, #TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。 #对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量, #但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死