CentOS系统优化指南
优化CentOS系统需从系统清理、内核调参、内存管理、磁盘I/O、网络配置、服务管理、SELinux及硬件等多维度入手,以下是具体步骤:
sudo yum clean all清除yum下载的软件包缓存,释放磁盘空间。sudo yum autoremove删除不再需要的依赖包;通过package-cleanup --oldkernels --count=2保留最新的2个内核,删除旧内核。find /var/log -type f -name "*.log" -size +50M -mtime +7 -exec truncate -s 0 {} \;(清理7天前超过50M的日志)。find /var/log -type f -mtime +30 -exec rm -f {} \;(删除30天前的日志)。sudo logrotate /etc/logrotate.conf自动管理日志大小和保留周期。sudo rm -rf /tmp/* /var/tmp/*删除临时目录下的无用文件。编辑/etc/sysctl.conf文件,添加或修改以下关键参数,提升网络、内存等性能,修改后执行sudo sysctl -p使配置生效:
net.ipv4.tcp_tw_reuse = 1(允许复用TIME-WAIT状态的连接)、net.ipv4.tcp_fin_timeout = 30(缩短FIN_WAIT_2状态的超时时间)、net.ipv4.tcp_max_syn_backlog = 8192(增加SYN队列长度)、net.core.somaxconn = 1024(增大TCP连接队列上限)。vm.swappiness = 10(降低Swap使用倾向,优先使用物理内存)、vm.dirty_ratio = 10(当脏页占内存10%时触发写入磁盘)、vm.dirty_background_ratio = 5(后台写入脏页的阈值)。fs.file-max = 1024000(增大系统最大文件描述符数)、net.core.netdev_max_backlog = 2000(增加网络设备接收队列长度)。free -m。sudo mkswap /dev/sdb1(假设/dev/sdb1为新增分区)。sudo swapon /dev/sdb1。/etc/fstab中添加/dev/sdb1 swap swap defaults 0 0。vm.swappiness参数控制内存不足时使用Swap的倾向(0-100),建议设为10(值越小,越优先使用物理内存)。cat /sys/block/sda/queue/scheduler(如显示deadline、noop等)。echo deadline > /sys/block/sda/queue/scheduler(deadline适合大多数服务器场景)。/etc/default/grub中添加elevator=deadline,执行sudo grub2-mkconfig -o /boot/grub2/grub.cfg更新GRUB配置。/etc/sysctl.conf中设置vm.dirty_ratio和vm.dirty_background_ratio(如上述),平衡内存与磁盘的写入效率。/etc/fstab,为根分区添加noatime,nodiratime选项(如/dev/sda1 / ext4 defaults,noatime,nodiratime 0 0),减少文件访问时的磁盘写入(不记录访问时间)。/etc/sysctl.conf中设置net.ipv4.tcp_window_size = 1024000(增大TCP窗口大小,提升吞吐量)、net.ipv4.tcp_max_tw_buckets = 5000(限制TIME-WAIT连接数,避免资源耗尽)。ethtool -l eth0 | grep "supported multiqueue"(若显示Multi-queue supported: Yes则支持)。ethtool -L eth0 combined 4(将网卡队列数设为4,提升并发处理能力)。/etc/resolv.conf,使用高性能DNS服务器(如nameserver 8.8.8.8);或安装dnsmasq作为本地缓存,加快域名解析速度。systemctl命令停止并禁用不需要的服务,例如:
sudo systemctl stop firewalld && sudo systemctl disable firewalld(若无需防火墙)。sudo systemctl stop NetworkManager && sudo systemctl disable NetworkManager(若使用传统网络配置)。systemctl list-unit-files --state=enabled查看所有启用服务,禁用无用服务。worker_processes(设为CPU核心数)、worker_connections(增大单个worker的最大连接数)。innodb_buffer_pool_size(设为物理内存的50%-70%,提升InnoDB性能)、max_connections(根据并发需求调整)。若无需SELinux的强制访问控制,可将其设为permissive模式(仅记录违规而不阻止)或完全禁用:
/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled。setenforce 0立即生效(重启后仍需修改配置文件保持生效)。top(实时查看进程资源占用)、htop(增强版top)、vmstat(查看内存、CPU、I/O统计)、iostat(查看磁盘I/O详情)等工具,定期监控系统状态。perf(性能分析工具)、strace(跟踪系统调用)等工具,定位CPU、内存、磁盘或网络的瓶颈,针对性优化。注意事项:
/etc目录、数据库文件)。worker_connections,数据库服务器需增大innodb_buffer_pool_size)。