Linux 系统优化配置

1. 内核参数优化(提高网络性能和系统稳定性)

通过 /etc/sysctl.conf/etc/sysctl.d/*.conf 调整内核参数,提高 TCP 性能、降低时延、优化系统资源管理。

# 增加最大文件描述符,防止进程因文件句柄耗尽而崩溃
fs.file-max = 1000000  

# 增强网络连接能力,适用于高并发服务器
net.core.somaxconn = 65535  
net.core.netdev_max_backlog = 65535  
net.ipv4.tcp_max_syn_backlog = 65535  

# TCP 连接优化,减少 TIME_WAIT 过多占用端口的问题
net.ipv4.tcp_tw_reuse = 1  # 允许重用 TIME_WAIT 状态的连接(Linux 4.12 及以上不支持 tcp_tw_recycle)
net.ipv4.tcp_fin_timeout = 30  # 关闭未活动连接的时间,默认 60s,降低为 30s

# TCP Keepalive 机制,防止死连接
net.ipv4.tcp_keepalive_time = 600  
net.ipv4.tcp_keepalive_probes = 3  
net.ipv4.tcp_keepalive_intvl = 15  

# 关闭 IPv6(如果未使用 IPv6)
net.ipv6.conf.all.disable_ipv6 = 1  

# 防止 SYN 洪水攻击
net.ipv4.tcp_syncookies = 1  

# 内存优化,减少交换分区使用,提高性能
vm.swappiness = 10  
vm.overcommit_memory = 1  # 允许进程申请超过实际内存的资源

应用配置:

sysctl -p  # 使上述设置生效

2. ulimit 资源限制优化(防止资源耗尽)

Linux 默认文件句柄和进程限制较低,在高并发场景下可能触发 Too many open filesfork: Resource temporarily unavailable 错误。
修改 /etc/security/limits.conf/etc/security/limits.d/*.conf

* soft nofile 65535  # 进程允许打开的最大文件数(软限制)
* hard nofile 65535  # 进程允许打开的最大文件数(硬限制)
* soft nproc 65535  # 允许创建的最大进程数(软限制)
* hard nproc 65535  # 允许创建的最大进程数(硬限制)

确保 PAM 允许这些修改

echo "session required pam_limits.so" >> /etc/pam.d/common-session  # Ubuntu
echo "session required pam_limits.so" >> /etc/pam.d/system-auth  # CentOS

3. CPU 频率调节(提高 CPU 性能)

Linux 默认使用 ondemand 调度策略,适用于省电但可能影响高性能需求。
查看当前 CPU 调度模式:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

调整为高性能模式:

echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

4. 磁盘 I/O 优化(优化存储性能)

Linux 默认使用 cfq(完全公平队列),但对于 SSD 或高负载服务器,应调整 I/O 调度策略。

建议设置:

echo deadline > /sys/block/sda/queue/scheduler  # 适用于 HDD
echo none > /sys/block/sda/queue/scheduler  # 适用于 SSD

5. 网络优化(减少丢包,提高吞吐)

开启 BBR 拥塞控制

BBR(Bottleneck Bandwidth and RTT)是 Google 提出的 TCP 拥塞控制算法,可以提高网络吞吐。

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf  
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf  
sysctl -p

验证 BBR 是否生效:

sysctl net.ipv4.tcp_congestion_control  # 应返回 bbr

6. SSH 优化(提高 SSH 安全性)

修改 /etc/ssh/sshd_config,增强 SSH 安全性:

PermitRootLogin no  # 禁止 root 直接登录,防止暴力破解
PasswordAuthentication no  # 禁止密码登录,仅允许密钥认证
UseDNS no  # 关闭远程 DNS 解析,加快 SSH 连接速度
GSSAPIAuthentication no  # 关闭 GSSAPI 认证,加快 SSH 连接
ClientAliveInterval 60  # 服务器每 60 秒发送一次心跳包
ClientAliveCountMax 3  # 允许 3 次超时,超时后自动断开连接

重启 SSH 服务:

systemctl restart sshd

7. 禁用 SELinux(仅限 CentOS,防止权限问题)

SELinux 可能导致某些应用程序无法正常运行,生产环境可选择禁用。

临时关闭 SELinux:

setenforce 0

永久禁用(修改 /etc/selinux/config):

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

8. 防火墙优化(开放必要端口)

Ubuntu(UFW)

ufw allow 22/tcp  # 允许 SSH
ufw allow 80/tcp  # 允许 HTTP
ufw allow 443/tcp  # 允许 HTTPS
ufw enable  # 启用防火墙

CentOS(firewalld)

firewall-cmd --permanent --add-service=http  # 开放 HTTP 端口
firewall-cmd --permanent --add-service=https  # 开放 HTTPS 端口
firewall-cmd --reload  # 重新加载防火墙配置

9. 日志优化(减少磁盘 I/O 压力)

系统日志可能会占用大量磁盘空间,可限制 journald 的日志存储大小:

sed -i 's/#SystemMaxUse=/SystemMaxUse=200M/' /etc/systemd/journald.conf
systemctl restart systemd-journald

10. 定期清理系统(释放磁盘空间)

定期清理不必要的包和缓存文件:

apt autoremove -y && apt autoclean -y  # Ubuntu
yum autoremove -y && yum clean all  # CentOS

总结:

  • 网络优化(BBR、TCP 调优)适用于高并发服务器
  • 内存和 CPU 优化(swappiness、CPU 调度)可提高系统整体性能
  • 磁盘优化(I/O 调度)有助于提高磁盘吞吐
  • 安全优化(SSH、SELinux、防火墙)可提升服务器安全性
  • 系统资源优化(ulimit、文件描述符)适用于高并发应用

这些优化可根据具体业务需求调整,以提高 Linux 服务器的性能和稳定性。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容