1.修改查询单个用户对文件描述符的使用限制,即打开文件的个数
2.修改查询单个用户最多拥有的进程数,即一个用户所有打开的最大进程数

[root@localhost security]# egrep -v '^$|^#' limits.conf

  • soft nofile 65536
  • hard nofile 65536
  • soft nproc 65536
  • hard nproc 65536

注意:重启生效。

[root@localhost ~]# ulimit -u
65536
[root@localhost ~]# ulimit -n
65536

优化内核:
/etc/sysctl.conf
默认配置:
net.ipv4.tcp_max_tw_buckets = 8192
net.ipv4.ip_local_port_range = 32768 60999
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_syncookies = 1
net.core.somaxconn = 128
net.core.netdev_max_backlog = 1000
net.ipv4.tcp_max_orphans = 8192
net.ipv4.tcp_max_syn_backlog = 128
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 6
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_keepalive_time = 7200

修改后的配置:
[root@localhost etc]# sysctl -p
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30

注解:
net.ipv4.tcp_max_tw_buckets = 6000
设置timewait的值
net.ipv4.ip_local_port_range = 1024 65000
设置系统允许打开的端口范围值
net.ipv4.tcp_tw_recycle = 1
用于设置是否启用timeout快速回收
net.ipv4.tcp_tw_reuse = 1
设置是否开启重新使用,即允许将TIME-WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_syncookies = 1
是否启用syncookies。如果启用,当出现syn等待队列溢出,则使用coookie来处理
net.core.somaxconn = 65535
web应用中listen函数的backlog。nginx定义的NGX_LISTEN_BACKLOG
net.core.netdev_max_backlog = 262144
设置被传输到队列数据包的最大数目,在网卡接收数据包的速率比内核处理数据包的速率快时,那么会出现排队现象,这个参数用于设置这个队列的大小
net.ipv4.tcp_max_orphans = 262144
设置Linux能够处理不属于任何进程的套子节数量,所谓不属于任何进程的进程就是孤儿进程。在快速、大量的连接中这种进程会很多,因此要适当设置,如果这种"孤儿"进程套接字数量大于这个指定的值,使用dmesg查看是会出现"too many of orphands sockes"的警告
net.ipv4.tcp_max_syn_backlog = 262144
记录尚未接收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_synack_retries = 1
用于设置SYN重试的次数,在TCp的3次握手中的第二次握手,内核需要发送一个回应前面一个SYN的ACK的SYN。就是说为了打开对方的连接,内核发出的SYN的次数。减少该参数有利于避免DDOS***
net.ipv4.tcp_syn_retries = 1
设置在内核放弃建立连接之前发送SYN包的数量
net.ipv4.tcp_fin_timeout = 1
表示如果套接字由本段要求关闭,这个参数决定了它保持在FIN_WAIT_2状态的时间。对端可以出错并永远不关闭连接,甚至以外宕机。可以按此设置,但要记住的是,即使是一个轻载的web服务器,也有因为大量的死套接字而内存溢出的风险,FIN-WAIT-2的危险性比FIN-WAIT-1要小,因为它嘴都只能消耗1.5KB的内存,但是它的生存期要长一些。
net.ipv4.tcp_keepalive_time = 30
当启用keeplive的时候,改参数用于设置TCP发送keeplive消息的频度