优化CentOS系统性能是一个多方面的过程,涉及硬件、系统配置、网络设置等多个方面。以下是一些基本的优化技巧:
备份原始yum源配置文件:
cp /etc/yum.repos.d/centos-base.repo /etc/yum.repos.d/centos-base.repo.backup
下载新的yum源配置文件:
curl -o /etc/yum.repos.d/centos-base.repo http://mirrors.aliyun.com/repo/centos-7.repo
清空缓存并重新生成缓存:
sudo yum clean all
sudo yum makecache
更新系统软件包:
sudo yum update
调整内核参数:编辑 /etc/sysctl.conf
文件,添加或修改以下参数以提高性能:
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = "1024 65535"
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 1024
net.core.netdev_max_backlog = 2000
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_syncookies = 1
使更改生效:
sudo sysctl -p
禁用不必要的服务和进程,减少系统资源占用。例如,停止并禁用防火墙服务:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
编辑 /etc/fstab
文件,为文件系统添加 noatime
和 nodiratime
选项,以减少磁盘I/O操作:
/dev/sda1 / ext4 defaults,noatime,nodiratime 0 0
保存更改后重新挂载文件系统:
sudo mount -a
调整Swap分区大小:
创建一个新分区,例如 /dev/sdb1
。
将新分区设置为Swap分区:
mkswap /dev/sdb1
启用Swap分区:
swapon /dev/sdb1
修改 /etc/fstab
文件,使Swap分区在系统启动时自动挂载:
/dev/sdb1 swap swap defaults 0 0
调整Swappiness值:
sysctl vm.swappiness=10
要使设置永久生效,需要修改 /etc/sysctl.conf
文件,添加以下内容:
vm.swappiness=10
调整进程优先级:可以使用 renice
命令调整进程优先级:
renice -n 10 -p 12345
调整Nice值:可以使用 nice
命令调整程序运行的Nice值:
nice -n 10 command
调整I/O调度器:CentOS默认的I/O调度器是CFQ(完全公平队列),可以根据实际需求选择合适的I/O调度器,例如Deadline或NOOP。
要查看当前I/O调度器,可以使用以下命令:
cat /sys/block/sda/queue/scheduler
要更改I/O调度器,可以使用以下命令:
echo deadline /sys/block/sda/queue/scheduler
要使设置永久生效,需要修改 /etc/default/grub
文件,添加以下内容:
GRUB_CMDLINE_LINUX="... elevator=deadline"
然后运行以下命令更新GRUB配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
调整TCP参数:可以通过调整TCP参数来提高网络性能,调整TCP窗口大小、TCP最大报文段长度等,可以使用 sysctl
命令进行调整:
sysctl net.ipv4.tcp_window_size=10240000
sysctl net.ipv4.tcp_max_syn_backlog=1024
sysctl net.core.somaxconn=1024
sysctl net.ipv4.tcp_max_tw_buckets=5000
sysctl net.ipv4.tcp_fin_timeout=30
使用网卡多队列:使用网卡多队列可以提高网络性能,检查网卡是否支持多队列:
ethtool eth0 | grep "supported multiqueue"
如果支持多队列,可以使用以下命令启用多队列:
ethtool -A eth0 on
关闭不必要的服务:可以使用 systemctl
命令关闭不必要的服务:
sudo systemctl stop service_name
sudo systemctl disable service_name
优化服务配置:根据实际需求,优化服务配置,例如优化Nginx配置、MySQL配置等。
top
、vmstat
、iostat
等来监控系统资源使用情况。在进行任何优化操作之前,请确保备份重要数据,并在测试环境中验证优化效果。