优化操作系统本身
操作系统:CentOS 7.2 x86_64
内核参数优化:
vim /etc/sysctl.conf
#系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。
fs.file-max = 600000
# 端口使用的范围
net.ipv4.ip_local_port_range = 9500 65000
# 接收套接字缓冲区大小的最大值(以字节为单位)
net.core.rmem_max = 16777216
# 发送套接字缓冲区大小的默认值(以字节为单位)
net.core.wmem_max = 16777216
# 接收套接字缓冲区大小的默认值(以字节为单位)
net.core.rmem_default = 1048576
# 发送套接字缓冲区大小的默认值(以字节为单位)
net.core.wmem_default = 524288
# TCP接收缓冲区,3个字段分别是min,default,max,为TCP socket预留用于接收缓冲的内存数量,即使在内存出现紧张情况下TCP socket都至少会有这么多数量的内存用于接收缓冲,单位为内存页的大小
net.ipv4.tcp_rmem = 4096 87380 16777216
# TCP发送缓冲区,3个字段分别是min,default,max,为TCP socket预留用于发送缓冲区的内存数量
net.ipv4.tcp_wmem = 4096 65536 16777216
# 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 2500
# 尚未收到客户端确认信息的连接(SYN消息)队列的长度
net.ipv4.tcp_max_syn_backlog = 102400
# 当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭,触发后可在/var/log/messages中看到
net.ipv4.tcp_syncookies = 1
# 1表示开启tcp连接中TIME-WAIT sockets的重用
net.ipv4.tcp_tw_reuse = 1
# 开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。注意:如果开启了这个参数,服务器会将带了旧时间戳的包当作是recycle的tw连接的重传数据,不是新的请求,于是丢掉不回包,在NAT环境使用可能会造成大量丢包
net.ipv4.tcp_tw_recycle = 0
# 如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒
net.ipv4.tcp_fin_timeout = 30
# netfilter的状态追踪表最大数量,如果满了会导致丢包
net.netfilter.nf_conntrack_max = 4000000
# netfilter状态追踪表的失效时间
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
# 系统所能允许的time-wait连接的最大数量
net.ipv4.tcp_max_tw_buckets = 180000
修改打开文件数量
vim /etc/security/limits.conf
* soft nofile 600000
* hard nofile 600000
修改单个用户最大线程数:
vim /etc/security/limits.d/20-nproc.conf(CentOS6系统是90-nproc.conf)
* soft nproc 4096
root soft nproc unlimited
# 使配置生效
vim/etc/pam.d/login
session required /lib64/security/pam_limits.so
这只是操作系统本身的一些优化,希望大家知道这些小知识!