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 files 或 fork: 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 服务器的性能和稳定性。