CentOS 优化技巧
FreeGuideOnline
最新
2026-07-15
CentOS 优化技巧:从入门到实战
前言
CentOS 作为服务器操作系统因其稳定性被广泛使用,但默认配置往往无法充分发挥硬件性能。本文针对 CentOS 7/8(含 Stream 版本)提供一套完整、安全的优化方案,帮助初学者在不影响系统安全的前提下提升运行效率。
系统基础优化
保持系统更新
及时更新是安全与性能的基础。
sudo yum update -y # CentOS 7
sudo dnf update -y # CentOS 8 / Stream
建议开启自动安全更新:
sudo yum install -y yum-cron
sudo systemctl enable --now yum-cron
切换更快的内核(可选项)
对于需要低延迟的应用,可考虑安装实时内核:
sudo yum install -y kernel-rt
重启后选择对应内核启动。一般生产环境无需此操作。
服务与进程优化
禁用不需要的服务
减少后台进程可释放内存与CPU。
# 查看当前运行的服务
systemctl list-unit-files --type=service | grep enabled
# 常见可禁用服务示例(根据实际需求取舍)
sudo systemctl disable postfix # 若不需本地邮件服务
sudo systemctl disable avahi-daemon
sudo systemctl disable bluetooth
sudo systemctl disable cups
进程资源限制优化
修改 /etc/security/limits.conf,提升文件描述符上限:
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
编辑 /etc/systemd/system.conf 启用全局限制:
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
内核参数调优
网络内核参数
编辑 /etc/sysctl.conf 或 /etc/sysctl.d/99-custom.conf,添加:
# 开启TCP TIME_WAIT状态重用
net.ipv4.tcp_tw_reuse = 1
# 快速回收TIME_WAIT(NAT环境慎用)
net.ipv4.tcp_tw_recycle = 0
# 调整TCP FIN超时
net.ipv4.tcp_fin_timeout = 30
# 扩大连接追踪表
net.ipv4.netfilter.ip_conntrack_max = 1048576
# 增大本地端口范围
net.ipv4.ip_local_port_range = 1024 65535
# TCP保持连接探测
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
# SYN队列长度
net.ipv4.tcp_max_syn_backlog = 8192
立即生效:sudo sysctl -p
内存与虚拟内存优化
# 降低swap使用倾向(0-100,值越低越优先使用物理内存)
vm.swappiness = 10
# 脏页比率,异步写回
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
# 启用大页内存(适合数据库等内存密集型应用)
vm.nr_hugepages = 1024
文件系统与I/O优化
调整文件系统挂载选项
在 /etc/fstab 中为分区添加优化标志:
# 例如针对 xfs/ext4 添加 noatime
/dev/sda1 / ext4 defaults,noatime 0 0
noatime:不记录文件访问时间,减少磁盘写操作。discard:对SSD开启TRIM(需文件系统支持)。
I/O调度器选择
查看当前调度器:
cat /sys/block/sda/queue/scheduler
对于SSD,推荐使用 mq-deadline 或 kyber;对于HDD可用 bfq。永久配置:
echo 'ACTION=="add|change", KERNEL=="sd*", ATTR{queue/scheduler}="mq-deadline"' > /etc/udev/rules.d/60-io-scheduler.rules
调整文件描述符与inode缓存
fs.file-max = 6553560
fs.inotify.max_user_watches = 524288
安全组件优化
SELinux 调优
不要盲目关闭SELinux,而是进行合理配置:
# 查看当前模式
getenforce
# 设置为宽容模式(临时),方便调试
sudo setenforce 0
# 查看审计日志,解决权限问题
sudo ausearch -m avc
# 修改文件上下文
semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
restorecon -Rv /web
生产环境建议保持 enforcing 模式。
Firewalld 优化
- 仅开放必需端口。
- 使用丰富规则代替直接修改配置文件:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept'
sudo firewall-cmd --reload
- 限制SSH暴力破解:
fail2ban配合 firewalld。
性能监控与调优工具
安装常用监控工具
sudo yum install -y sysstat iotop htop iftop nload
iostat:查看磁盘I/O。htop:交互式进程监控。iptraf-ng:网络流量监控。
使用 tuned 自动调优
CentOS 内置 tuned 工具,可根据场景切换优化方案:
sudo yum install tuned -y
sudo systemctl enable --now tuned
# 查看可用配置
tuned-adm list
# 适用于高吞吐网络场景
sudo tuned-adm profile throughput-performance
# 适用于低延迟
sudo tuned-adm profile latency-performance
实战案例:Web服务器优化
Nginx/Apache 关联优化
- 增大
worker_connections,配合文件描述符上限。 - 启用 TCP Fast Open:
net.ipv4.tcp_fastopen = 3
(需 Nginx 编译时支持 --with-cc-opt='-DTCP_FASTOPEN=23')
- 调整内核的 somaxconn:
net.core.somaxconn = 65535
MySQL/MariaDB 优化
- 挂载
/var/lib/mysql分区使用noatime及deadline调度器。 - 使用大页内存,并配置数据库启用。
- 调整
innodb_buffer_pool_size为物理内存的60%-70%。
总结
优化需循序渐进,每次修改后应充分测试。记录原始参数以便回滚。CentOS 优化是一个平衡过程,需在性能、稳定性和安全性之间找到最佳结合点。通过以上技巧,你的服务器将能承载更高负载并保持可靠运行。