centos

CentOS从零开始如何优化性能

小樊
56
2025-08-31 01:17:40
栏目: 智能运维

CentOS从零开始优化性能的全流程指南

一、前期准备:基准测试与工具安装

在开始优化前,建立性能基准是关键,用于后续对比优化效果。使用以下工具进行初始检测:

yum install sysstat dstat stress iperf3 fio -y
systemctl enable sysstat && systemctl start sysstat

记录初始指标(如CPU空闲率、内存使用率、磁盘I/O等待时间、网络延迟),作为优化效果的参照。

二、内核参数优化:调整系统底层行为

内核参数是性能优化的核心,需修改/etc/sysctl.conf文件(永久生效)并通过sysctl -p应用更改。以下是关键参数及说明:

三、资源限制调整:避免进程过度消耗

默认情况下,Linux对用户/进程的资源限制较严格,需修改/etc/security/limits.conf文件(永久生效),提升关键服务的资源上限:

* soft nofile 65535    # 单进程最大打开文件数(软限制)
* hard nofile 100000   # 单进程最大打开文件数(硬限制)
* soft nproc 65535     # 单用户最大进程数(软限制)
* hard nproc 100000    # 单用户最大进程数(硬限制)

生效方式:重启系统或执行ulimit -n 65535临时生效(仅当前会话有效)。

四、磁盘I/O优化:提升存储性能

  1. 选择合适的文件系统

    • 推荐使用XFS(高性能、支持大文件、日志功能完善)或ext4(兼容性好);
    • 格式化时添加挂载选项:noatime(禁止记录文件访问时间)、nodiratime(禁止记录目录访问时间),减少磁盘写操作。
      示例(/etc/fstab配置):
    /dev/sda1 / xfs defaults,noatime,nodiratime 0 0
    

    挂载后执行mount -a生效。

  2. 调整I/O调度器
    根据磁盘类型选择调度器(通过cat /sys/block/sda/queue/scheduler查看当前调度器):

    • SSD:使用noop(无队列逻辑,直接提交请求,避免额外调度开销);
    • HDD:使用deadline(避免IO饥饿,适合机械硬盘的顺序/随机读写);
    • 虚拟机:使用noop(宿主物理机已处理调度)。
      永久生效:修改/etc/default/grub文件,在GRUB_CMDLINE_LINUX中添加elevator=noop,然后执行grub2-mkconfig -o /boot/grub2/grub.cfg更新GRUB配置。
  3. 关闭透明大页(THP)
    THP(Transparent Huge Pages)会合并小内存页为大页,增加内存管理开销(尤其是数据库场景),需关闭:

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

    永久生效:将上述命令添加到/etc/rc.local文件(需赋予执行权限chmod +x /etc/rc.local)。

五、网络优化:提升传输效率

  1. 启用TCP BBR拥塞控制
    BBR(Bottleneck Bandwidth and RTT)是谷歌开发的拥塞控制算法,能显著提升高带宽、高延迟网络的吞吐量(如跨机房、跨地域传输)。
    操作步骤:

    echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
    sysctl -p
    

    验证是否启用:ss -s(查看“retrans”重传率是否降低)。

  2. 多队列网卡优化
    若网卡支持多队列(如Intel千兆/万兆网卡),可通过ethtool启用多队列,提升网络吞吐量:

    ethtool -l eth0  # 查看当前队列数(如Combined=1)
    ethtool -L eth0 combined 8  # 设置为8个队列(需网卡和驱动支持)
    

    永久生效:将上述命令添加到/etc/rc.local文件。

六、服务与进程优化:减少不必要的资源消耗

  1. 关闭不必要的服务
    使用systemctl命令停止并禁用不需要的服务(如firewalldNetworkManager,若无需防火墙或网络管理):

    systemctl stop firewalld && systemctl disable firewalld
    systemctl stop NetworkManager && systemctl disable NetworkManager
    

    列出所有运行中的服务:systemctl list-units --type=service --state=running,根据业务需求禁用无用服务。

  2. 调整服务配置
    针对常用服务(如Nginx、MySQL),优化其配置文件以提升性能:

    • Nginx:调整worker_processes(设为CPU核心数,如worker_processes 4)、worker_connections(每个worker的最大连接数,如worker_connections 65535);
    • MySQL:调整innodb_buffer_pool_size(InnoDB缓冲池大小,设为物理内存的50%-70%,如innodb_buffer_pool_size=4G)、max_connections(最大连接数,如max_connections=200)。

七、硬件优化:提升底层性能

  1. 升级硬件

    • 增加内存:物理内存不足是性能瓶颈的主要原因之一,建议根据业务需求升级至16G及以上;
    • 更换SSD:将系统盘/数据盘更换为SSD(如NVMe SSD),提升磁盘I/O性能(比HDD快10倍以上);
    • 升级CPU:选择多核心、高主频的CPU(如Intel Xeon、AMD EPYC),提升计算能力。
  2. RAID配置
    使用RAID技术提升磁盘性能和冗余:

    • RAID 10:兼顾性能与冗余(适合数据库、高并发场景);
    • RAID 5:提升读取性能并提供冗余(适合文件存储、备份场景)。

八、监控与持续优化:保持性能稳定

  1. 定期监控
    使用dstat实时监控系统状态:

    dstat -tcmnd --disk-util --top-cpu  # 显示时间、CPU、内存、磁盘使用率、TOP CPU进程
    

    使用sar查看历史性能数据:

    sar -u 1 5  # 查看CPU使用率(1秒采样,共5次)
    sar -d 1 5  # 查看磁盘I/O使用率
    
  2. 压力测试
    优化后进行压力测试,验证性能提升效果:

    • CPU压力测试:stress --cpu 4 --timeout 600(模拟4个CPU核心满载运行10分钟);
    • 内存压力测试:memtester 2G 60(测试2G内存的正确性,运行60秒);
    • 磁盘I/O压力测试:fio --name=test --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based(模拟4个线程随机读取1G文件,运行60秒);
    • 网络压力测试:iperf3 -c server_ip -t 30 -P 10(客户端向服务器发送10个并行TCP流,测试30秒)。
  3. 回滚机制
    优化前备份所有配置文件(如/etc/sysctl.conf/etc/fstab、服务配置文件),若优化后出现性能下降或稳定性问题,可快速恢复:

    cp /etc/sysctl.conf.bak /etc/sysctl.conf
    cp /etc/fstab.bak /etc/fstab
    systemctl restart network
    

通过以上步骤,可从内核、资源、磁盘、网络、服务、硬件等多个层面优化CentOS性能,逐步提升系统吞吐量、降低延迟、增强稳定性。需注意的是,优化需循序渐进,每次只修改1-2个参数,监控72小时后再进行下一步,避免因参数冲突导致系统崩溃。

0
看了该问题的人还看了