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-deadlinekyber;对于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 分区使用 noatimedeadline 调度器。
  • 使用大页内存,并配置数据库启用。
  • 调整 innodb_buffer_pool_size 为物理内存的60%-70%。

总结

优化需循序渐进,每次修改后应充分测试。记录原始参数以便回滚。CentOS 优化是一个平衡过程,需在性能、稳定性和安全性之间找到最佳结合点。通过以上技巧,你的服务器将能承载更高负载并保持可靠运行。