侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 4 条评论

CentOS 性能调优指南

2025-2-7 / 0 评论 / 14271 阅读

CentOS 性能调优指南

一、系统更新

在进行任何性能调优之前,确保系统是最新的,这样可以获得最新的安全补丁和性能改进。

# 更新系统软件包
sudo yum update -y

二、内核参数调优

内核参数的调整可以显著影响系统的性能,特别是在高并发场景下。编辑 /etc/sysctl.conf 文件并添加或修改以下参数:

# 允许系统使用更多的内存作为文件系统缓存
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2

# 调整 TCP 相关参数以优化网络性能
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.core.somaxconn = 8192

# 增加文件句柄限制
fs.file-max = 65536

应用新的内核参数:

sudo sysctl -p

三、用户和进程资源限制

为了避免单个进程耗尽系统资源,需要调整用户和进程的资源限制。编辑 /etc/security/limits.conf 文件,添加以下内容:

*               soft    nofile          65536
*               hard    nofile          65536
*               soft    nproc           65536
*               hard    nproc           65536

编辑 /etc/pam.d/login 文件,确保包含以下行:

session    required     pam_limits.so

四、磁盘 I/O 优化

4.1 选择合适的文件系统

对于大多数场景,XFS 文件系统是一个不错的选择,它具有良好的性能和扩展性。如果需要重新格式化磁盘,可以使用以下命令:

# 卸载磁盘
sudo umount /dev/sdX

# 格式化磁盘为 XFS
sudo mkfs.xfs /dev/sdX

4.2 调整磁盘调度算法

不同的磁盘调度算法适用于不同的场景。对于 SSD 磁盘,建议使用 noop 调度算法;对于 HDD 磁盘,deadlinecfq 可能更合适。可以通过以下命令临时调整调度算法:

sudo echo noop > /sys/block/sdX/queue/scheduler

为了使设置永久生效,可以编辑 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX 行中添加 elevator=noop

GRUB_CMDLINE_LINUX="elevator=noop ..."

更新 GRUB 配置:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

五、内存管理优化

5.1 调整交换空间使用

减少系统对交换空间的依赖可以提高性能。编辑 /etc/sysctl.conf 文件,添加或修改以下参数:

vm.swappiness = 10

应用新的内核参数:

sudo sysctl -p

5.2 使用透明大页(THP)

透明大页可以减少页表项的数量,提高内存访问效率。可以通过以下命令临时禁用 THP:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

为了使设置永久生效,可以编辑 /etc/rc.local 文件,添加以下内容:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

并确保 /etc/rc.local 文件具有可执行权限:

sudo chmod +x /etc/rc.d/rc.local

六、网络优化

6.1 调整网络缓冲区大小

编辑 /etc/sysctl.conf 文件,添加或修改以下参数:

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.ipv4.tcp_rmem = "4096 87380 16777216"
net.ipv4.tcp_wmem = "4096 65536 16777216"

应用新的内核参数:

sudo sysctl -p

6.2 禁用不必要的网络服务

使用 systemctl 命令禁用不必要的网络服务,例如:

sudo systemctl disable firewalld
sudo systemctl stop firewalld

七、服务和应用程序优化

7.1 禁用不必要的系统服务

使用 systemctl 命令列出并禁用不必要的系统服务:

# 列出所有服务
sudo systemctl list-unit-files --type=service

# 禁用服务
sudo systemctl disable service_name

7.2 优化数据库服务(以 MySQL 为例)

编辑 /etc/my.cnf 文件,根据服务器的内存和负载情况调整以下参数:

[mysqld]
innodb_buffer_pool_size = 512M
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2

重启 MySQL 服务使配置生效:

sudo systemctl restart mysqld

八、监控和调优反馈

使用系统监控工具(如 tophtopiostatvmstatnetstat 等)定期监控系统性能,根据监控结果进一步调整系统参数。例如,使用 iostat 监控磁盘 I/O 情况:

iostat -x 1

九、CPU 性能优化

9.1 CPU 亲和性设置

对于多 CPU 或多核系统,合理设置 CPU 亲和性可以提高性能。通过将进程绑定到特定的 CPU 核心,可以减少 CPU 之间的上下文切换开销。

以 Nginx 为例,使用 taskset 命令将 Nginx 工作进程绑定到特定的 CPU 核心:

# 查找 Nginx 工作进程的 PID
ps -ef | grep nginx | grep worker

# 将 PID 为 1234 的 Nginx 工作进程绑定到 CPU 核心 0
taskset -pc 0 1234

若要让 Nginx 启动时就绑定 CPU 核心,可以修改 Nginx 配置文件 /etc/nginx/nginx.conf,添加以下内容:

worker_processes auto;
worker_cpu_affinity auto;

9.2 调整 CPU 调度策略

根据不同的应用场景,可以调整 CPU 的调度策略。例如,对于实时性要求较高的应用,可以使用 SCHED_FIFOSCHED_RR 调度策略。

使用 chrt 命令修改进程的调度策略和优先级:

# 将 PID 为 1234 的进程设置为 SCHED_FIFO 调度策略,优先级为 99
chrt -f -p 99 1234

十、日志管理优化

10.1 日志轮转

日志文件会随着时间的推移不断增大,占用大量磁盘空间。使用 logrotate 工具可以定期轮转日志文件,避免磁盘空间被占满。

编辑 /etc/logrotate.conf 文件,根据需要调整日志轮转的周期、保留数量等参数:

# 每周轮转一次日志文件
weekly

# 保留 4 周的日志文件
rotate 4

# 压缩旧的日志文件
compress

还可以为特定的应用程序创建单独的日志轮转配置文件,例如 /etc/logrotate.d/nginx

/var/log/nginx/*.log {
    daily
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 nginx nginx
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
    endscript
}

10.2 减少不必要的日志记录

在应用程序配置中,减少不必要的日志记录可以降低磁盘 I/O 开销。例如,在 Nginx 配置文件中,可以将日志级别设置为 error 或更高:

error_log /var/log/nginx/error.log error;

十一、电源管理优化

11.1 禁用不必要的电源节省模式

在服务器环境中,禁用不必要的电源节省模式可以确保系统始终以最高性能运行。编辑 /etc/default/tuned 文件,将 ACTIVE_PROFILE 设置为 performance

ACTIVE_PROFILE=performance

重启 tuned 服务使配置生效:

sudo systemctl restart tuned

11.2 调整 CPU 频率

使用 cpupower 工具可以调整 CPU 的频率。例如,将 CPU 频率设置为最高性能模式:

sudo cpupower frequency-set -g performance

十二、存储系统优化

12.1 RAID 配置

如果服务器使用多个磁盘,可以通过 RAID 配置提高存储性能和数据冗余。常见的 RAID 级别有 RAID 0、RAID 1、RAID 5、RAID 10 等。

以创建 RAID 1 为例,使用 mdadm 工具:

# 创建 RAID 1 阵列
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

# 格式化 RAID 阵列
sudo mkfs.xfs /dev/md0

# 挂载 RAID 阵列
sudo mkdir /mnt/raid1
sudo mount /dev/md0 /mnt/raid1

12.2 LVM 优化

如果使用 LVM(逻辑卷管理),可以通过调整逻辑卷的条带化和镜像等参数来提高性能。例如,创建条带化的逻辑卷:

# 创建物理卷
sudo pvcreate /dev/sdc /dev/sdd

# 创建卷组
sudo vgcreate vg0 /dev/sdc /dev/sdd

# 创建条带化的逻辑卷
sudo lvcreate -L 10G -n lv0 -i 2 -I 256 vg0

# 格式化逻辑卷
sudo mkfs.xfs /dev/vg0/lv0

# 挂载逻辑卷
sudo mkdir /mnt/lv0
sudo mount /dev/vg0/lv0 /mnt/lv0

十三、安全优化对性能的影响平衡

13.1 防火墙规则优化

虽然防火墙可以提高系统的安全性,但过多或不合理的防火墙规则会影响网络性能。定期清理不必要的防火墙规则,只开放必要的端口。

使用 firewalld 管理防火墙规则:

# 查看当前防火墙规则
sudo firewall-cmd --list-all

# 开放特定端口
sudo firewall-cmd --permanent --add-port=80/tcp

# 重新加载防火墙规则
sudo firewall-cmd --reload

13.2 SELinux 策略调整

SELinux 可以增强系统的安全性,但严格的 SELinux 策略可能会影响应用程序的性能。可以根据实际情况调整 SELinux 的策略模式,例如将 SELinux 设置为宽容模式:

# 临时将 SELinux 设置为宽容模式
sudo setenforce 0

# 永久将 SELinux 设置为宽容模式
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

评论一下?

OωO
取消