優化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 等來監控系統資源使用情況。在進行任何優化操作之前,請確保備份重要數據,并在測試環境中驗證優化效果。