Linux系统配置优化:实用技巧大揭秘

云游道人 2025-03-03 1236 阅读 0评论

应用系统跑在操作系统上面,系统的性能也关系到应用程序的性能,这里讲一些Linux性能关键的配置信息。

永久关闭selinux

selinux提高系统安全性,但会造成很多麻烦,一般关闭

[root

将SELINUX=enforcing改为SELINUX=disabled,保存后退出,重启生效

[root

设定系统runlevel为3

节约系统资源

[root

加大系统文件描述符最大值

vim

调整大小

* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

说明:

  1. *代表针对所有用户

  2. noproc 是代表最大进程数

  3. nofile 是代表最大文件打开数

调整内核参数文件 /etc/syctl.conf

配置网络参数来提高系统负载能力
如果出现服务器丢包的情况,需要考虑是不是如下配置需要调整

vim

net.ipv4.tcp_syncookies = 1

表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

net.ipv4.tcp_tw_reuse = 1

表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1

表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout = 30

表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

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_syn_backlog = 8192

表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

net.nf_conntrack_max = 655360

在内核内存中netfilter可以同时处理的“任务”(连接跟踪条目)

防火墙配置

/etc/syctl 尾部加上如下防火墙相关配置

有可能是sysctl.conf.first文件

开启重用,回收 socket资源用于新的TCP链接

net.ipv4.tcp_tw_reuse=

开启回收:

net.ipv4.tcp_tw_recycle=

网络链接最大值及超时配置

net.nf_conntrack_max =

net.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 –

常见异常

  • too many open files(打开的文件过多)

程序在Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。

在高并发情况或者程序代码中没有正确关闭IO, 并系统限制比较小的情况下,系统在运行一段时间后,程序打开句柄数超过系统限制的时候抛出该异常

解决方法:加大系统文件描述符最大值
  • 连接服务器超时

一般TimeWait进程数过多,原因一般为应用程序没有正确关闭连接,导致服务器TIME_WAIT进程过多,主动关闭连接导致TIME_WAIT产生。先检查程序及系统以上配置

解决方法:解决程序问题,检查系统内核网络及防火墙内核设置

常见命令

查看机器网络状态状态

netstat -n | awk '/^tcp/ {++

状态:描述

CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

总结

Linux提供了丰富的内核参数供使用者调整,调整得当可以大幅提高服务器的处理能力

喜欢就支持以下吧
点赞 0

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 1236人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表