应用系统跑在操作系统上面,系统的性能也关系到应用程序的性能,这里讲一些Linux性能关键的配置信息。
永久关闭selinux
selinux提高系统安全性,但会造成很多麻烦,一般关闭
vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled,保存后退出,重启生效
reboot
设定系统runlevel为3
节约系统资源
grep 3:initdefault /etc/inittab init 3
加大系统文件描述符最大值
vim /etc/security/limits.conf
调整大小
* soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536
说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
调整内核参数文件 /etc/syctl.conf
配置网络参数来提高系统负载能力
如果出现服务器丢包的情况,需要考虑是不是如下配置需要调整
vim /etc/syctl.conf
/etc/syctl 尾部加上如下防火墙相关配置
有可能是sysctl.conf.first文件
开启重用,回收 socket资源用于新的TCP链接
net.ipv4.tcp_tw_recycle=1
开启回收:
```javascript net.ipv4.tcp_tw_recycle=1
网络链接最大值及超时配置 ```javascript net.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_tcp_timeout_established = 180 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.nf_conntrack_max
nf_conntrack_max决定连接跟踪表的大小,默认值是65535,可以根据系统内存大小计算一个合理值:CONNTRACK_MAX = RAMSIZE(in bytes)/16384/(ARCH/32),如32G内存可以设置1048576;
nf_conntrack_buckets
决定存储conntrack条目的哈希表大小,默认值是nf_conntrack_max的1/4,延续这种计算方式:BUCKETS = CONNTRACK_MAX/4,如32G内存可以设置262144;
net.netfilter.nf_conntrack_max
最大连接数
net.netfilter.nf_conntrack_tcp_timeout_established
决定ESTABLISHED状态连接的超时时间,默认值是5天,可以缩短到1小时,即3600。
net.netfilter.nf_conntrack_tcp_timeout_time_wait
决定WAIT状态连接的超时等待时间
net.netfilter.nf_conntrack_tcp_timeout_close_wait
决定关闭状态连接的超时等待时间
net.netfilter.nf_conntrack_tcp_timeout_fin_wait
决定WAIT状态连接的超时等待时间
以上配置生效
sysctl –p
常见异常
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'LAST_ACK
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
总结
Linux提供了丰富的内核参数供使用者调整,调整得当可以大幅提高服务器的处理能力