Linux基础优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础优化相关的知识,希望对你有一定的参考价值。
Linux系统出现性能瓶颈(IO/CPU/MEM)时如其大费周章进行软件调优,还不如从硬件方面来解决更合理,软件方面的调优性能增加是微乎其微的。因为在系统部署初期已经对参数进行了合理的设置。
Linux系统软件方面调优也就是让参数设置更加合理,从而达到性能上提高。
一.Linux系统基础优化
当Linux服务器完成安装,我们需要进行一些合理的设置
- 不使用root用户登录系统,添加普通用户,通过sudo授权管理,降低root用户为人操作风险
- 配置yum源为国内源,如阿里源,163网易源
- 配置定时更新系统时间,防止因系统错误导致业务故障
- 更改sshd服务的默认端口,禁止root用户远程登录系统
- 关闭iptable,selinux服务,如果服务器有公网ip,需要配置iptables服务
- 禁用不必要的开机启动,自动开机服务有:network,rsyslog,sshd,crond
- 更改系统字符集支持中文,建议还是使用英文防止乱码
- 调整系统文件描述符
- 使用chart命令锁定系统关键文件:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow
- 去除系统与内核登录页面的显示,即清空/etc/issue
- 调整系统常见内核参数,主要是与TCP相关参数
二.常见内核参数优化
在看这些参数前需要理解TCP/ip三次握手与四次挥手原理与过程,这样有助于理解这些参数
#对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间
net.ipv4.tcp_fin_timeout = 2
#表示是否允许将处于TIME-WAIT状态的socket重新用于新的TCP连接,(这个对快速重启动某些服务,而启动后提示端口已经被使用的情形非常有帮助)
net.ipv4.tcp_tw_reuse = 1
#打开快速 TIME-WAIT sockets 回收
net.ipv4.tcp_tw_recycle = 1
#当出现syn等候队列出现溢出时象对方发送syncookies。目的是为了防止syn flood攻击。
net.ipv4.tcp_syncookies = 1
#TCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。防止两边建立连接但不发送数据的攻击。
net.ipv4.tcp_keepalive_time = 600
#表示用于向外连接的端口范围
net.ipv4.ip_local_port_range = 4000 65000
#对于那些依然还未获得客户端确认的(sync)连接请求﹐需要保存在队列中最大数目。对于超过 128Mb 内存的系统﹐默认值是 1024
net.ipv4.tcp_max_syn_backlog = 16384
#系统在同时所处理的最大timewait sockets数目
net.ipv4.tcp_max_tw_buckets = 36000
#路由缓存刷新频率, 当一个路由失败后多长时间跳到另一个,默认是300
net.ipv4.route.gc_timeout = 100
#对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。
net.ipv4.tcp_syn_retries = 1
#对于远端的连接请求SYN,内核会发送SYN +ACK数据报,以确认收到上一个 SYN连接请求包。这是所谓的三次握手( threeway handshake)机制的第二个步骤。这里决定内内核在放弃连接之前所送出的 SYN+ACK 数目。
net.ipv4.tcp_synack_retries = 1
#用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。
net.core.somaxconn = 16384
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 16384
#系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量﹐那么不属于任何进程的连接会被立即reset,并同时显示警告信息。
net.ipv4.tcp_max_orphans = 16384
对于参数的相关英文解释可以看帮忙文档man tcp
以上是关于Linux基础优化的主要内容,如果未能解决你的问题,请参考以下文章
使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化