5232 字
26 分钟

Linux系统调优和内核参数配置

2026-02-04
浏览量 加载中...

Linux系统调优和内核参数配置#

系统调优概述#

Linux系统调优是提高系统性能、稳定性和安全性的重要手段。通过合理配置系统参数和内核参数,可以充分发挥硬件性能,提高应用程序的运行效率,减少系统资源的浪费。本文将介绍Linux系统中常用的系统调优和内核参数配置命令和技巧,帮助系统管理员更高效地优化系统性能。

系统调优的目标#

  1. 提高性能:优化CPU、内存、磁盘和网络的使用,提高系统的响应速度和吞吐量
  2. 增强稳定性:减少系统崩溃和故障的发生,提高系统的可靠性
  3. 提高安全性:通过内核参数配置,增强系统的安全性,防止攻击
  4. 节省资源:合理分配和使用系统资源,减少资源浪费
  5. 适应负载:根据系统的负载情况,动态调整系统参数,适应不同的工作负载

系统调优的步骤#

  1. 监控系统:使用监控工具收集系统性能数据,了解系统的当前状态
  2. 分析瓶颈:根据监控数据,识别系统的性能瓶颈
  3. 制定策略:根据瓶颈分析,制定系统调优策略
  4. 实施调优:执行调优策略,修改系统参数和内核参数
  5. 验证效果:再次监控系统,验证调优效果
  6. 持续优化:根据系统的变化,持续调整系统参数,保持系统的最佳性能

CPU调优#

CPU监控#

Terminal window
# 查看CPU使用情况
top
mpstat -P ALL 1
pidstat -u 1
# 查看CPU信息
lscpu
cat /proc/cpuinfo
# 查看CPU温度
sensors # 需要安装lm-sensors
# 查看CPU负载
uptime
w

CPU调优策略#

1. 进程优先级调整#

Terminal window
# 查看进程优先级
ps -eo pid,comm,ni,pri,pcpu --sort=-pcpu | head -10
# 调整进程优先级(nice值)
nice -n 10 command # 启动进程时设置nice值
renice 10 -p PID # 调整运行中进程的nice值
# 实时调整进程优先级
top # 进入top后,按r,输入PID,输入nice值
# 查看实时优先级
chrt -p PID
# 设置实时优先级
chrt --fifo 99 -p PID # 设置为FIFO调度策略,优先级99
chrt --rr 99 -p PID # 设置为RR调度策略,优先级99

2. CPU亲和性设置#

Terminal window
# 查看进程的CPU亲和性
taskset -p PID
# 设置进程的CPU亲和性
taskset -c 0-3 PID # 绑定到CPU 0-3
taskset -c 0,2 PID # 绑定到CPU 0和2
# 启动进程时设置CPU亲和性
taskset -c 0-3 command
# 查看中断的CPU亲和性
cat /proc/interrupts
# 设置中断的CPU亲和性
echo "2" > /proc/irq/123/smp_affinity_list # 将中断123绑定到CPU 2

3. CPU调度策略调整#

Terminal window
# 查看当前CPU调度策略
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 设置CPU调度策略
echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # 性能模式
echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # 省电模式
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # 按需模式
echo "conservative" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # 保守模式
# 批量设置所有CPU的调度策略
for cpu in /sys/devices/system/cpu/cpu*; do
echo "performance" > "$cpu/cpufreq/scaling_governor"
done

4. 超线程管理#

Terminal window
# 查看超线程状态
cat /sys/devices/system/cpu/smt/active
# 启用超线程
echo "on" > /sys/devices/system/cpu/smt/control
# 禁用超线程
echo "off" > /sys/devices/system/cpu/smt/control
# 查看CPU核心和线程
lscpu | grep -E "CPU\(s\)|Thread|Core"

内存调优#

内存监控#

Terminal window
# 查看内存使用情况
free -h
vmstat 1
pidstat -r 1
# 查看内存详细信息
cat /proc/meminfo
# 查看进程内存使用情况
ps aux --sort=-%mem | head -10
# 查看内存映射
pmap -x PID
# 查看内存页面统计
cat /proc/vmstat

内存调优策略#

1. 内存分配策略调整#

Terminal window
# 查看内存分配策略
cat /proc/sys/vm/overcommit_memory
# 设置内存分配策略
echo "0" > /proc/sys/vm/overcommit_memory # 启发式策略
echo "1" > /proc/sys/vm/overcommit_memory # 总是允许
echo "2" > /proc/sys/vm/overcommit_memory # 从不允许
# 查看内存分配比率
echo "2" > /proc/sys/vm/overcommit_memory && echo "50" > /proc/sys/vm/overcommit_ratio # 设置为50%

2. 内存回收策略调整#

Terminal window
# 查看内存回收策略
echo "10" > /proc/sys/vm/swappiness # 设置swappiness值为10,减少交换
# 查看脏页比率
echo "10" > /proc/sys/vm/dirty_background_ratio # 后台脏页比率
echo "20" > /proc/sys/vm/dirty_ratio # 脏页比率
# 查看脏页写入延迟
echo "3000" > /proc/sys/vm/dirty_writeback_centisecs # 脏页写入延迟(毫秒)
# 查看内存压缩状态
cat /sys/kernel/mm/transparent_hugepage/enabled
# 启用内存压缩
echo "always" > /sys/kernel/mm/transparent_hugepage/enabled
# 禁用内存压缩
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled

3. 大页内存配置#

Terminal window
# 查看大页内存设置
cat /proc/sys/vm/nr_hugepages
cat /proc/meminfo | grep Huge
# 配置大页内存
echo "1024" > /proc/sys/vm/nr_hugepages # 配置1024个大页
# 永久配置大页内存
sudo nano /etc/sysctl.conf
# 添加 vm.nr_hugepages = 1024
# 应用配置
sudo sysctl -p
# 查看大页内存使用情况
ls /sys/kernel/mm/hugepages/

4. 内存限制设置#

Terminal window
# 查看进程内存限制
cat /proc/PID/limits
# 设置进程内存限制
ulimit -m 1024000 # 设置最大内存使用为1GB
ulimit -v 1024000 # 设置最大虚拟内存使用为1GB
# 永久设置内存限制
sudo nano /etc/security/limits.conf
# 添加 username soft memlock 1024000
# 添加 username hard memlock 1024000

磁盘I/O调优#

磁盘监控#

Terminal window
# 查看磁盘使用情况
df -h
# 查看磁盘I/O统计信息
iostat -x 1
iotop # 需要安装iotop
pidstat -d 1
# 查看磁盘分区
fdisk -l
parted -l
# 查看磁盘健康状态
sudo smartctl -a /dev/sda # 需要安装smartmontools
# 查看文件系统状态
tune2fs -l /dev/sda1 # ext2/3/4文件系统

磁盘I/O调优策略#

1. I/O调度器调整#

Terminal window
# 查看当前I/O调度器
cat /sys/block/sda/queue/scheduler
# 设置I/O调度器
echo "deadline" > /sys/block/sda/queue/scheduler # 截止时间调度器
echo "cfq" > /sys/block/sda/queue/scheduler # 完全公平调度器
echo "noop" > /sys/block/sda/queue/scheduler # 无操作调度器
# 批量设置所有磁盘的I/O调度器
for disk in /sys/block/sd*; do
echo "deadline" > "$disk/queue/scheduler"
done

2. 磁盘预读调整#

Terminal window
# 查看当前预读设置
blockdev --getra /dev/sda
# 设置预读大小
blockdev --setra 2048 /dev/sda # 设置为2048扇区(1MB)
# 批量设置所有磁盘的预读大小
for disk in /dev/sd*; do
blockdev --setra 2048 "$disk"
done

3. 磁盘缓存调整#

Terminal window
# 查看磁盘缓存设置
hdparm -W /dev/sda
# 启用磁盘写缓存
hdparm -W 1 /dev/sda
# 禁用磁盘写缓存
hdparm -W 0 /dev/sda
# 查看磁盘高级设置
hdparm -a /dev/sda # 预读设置
hdparm -A /dev/sda # 预读启用状态
hdparm -c /dev/sda # IDE 32位I/O设置
hdparm -d /dev/sda # DMA设置

4. 文件系统挂载选项优化#

Terminal window
# 查看当前挂载选项
mount
# 编辑fstab文件
sudo nano /etc/fstab
# 优化挂载选项
# /dev/sda1 / ext4 defaults,noatime,nodiratime,errors=remount-ro 0 1
# /dev/sda2 /home ext4 defaults,noatime,nodiratime 0 2
# /dev/sda3 /tmp ext4 defaults,noatime,nodiratime,nosuid,noexec,nodev 0 2
# /dev/sda4 /var ext4 defaults,noatime,nodiratime 0 2
# 重新挂载文件系统
sudo mount -o remount /
sudo mount -o remount /home
sudo mount -o remount /tmp
sudo mount -o remount /var

网络调优#

网络监控#

Terminal window
# 查看网络接口状态
ifconfig
ip addr
# 查看网络连接
netstat -tuln
ss -tuln
# 查看网络流量
iftop # 需要安装iftop
tcpdump -i eth0 # 需要安装tcpdump
# 查看网络统计信息
netstat -s
ss -s
# 测试网络延迟
ping -c 10 example.com
# 测试网络带宽
iperf3 -s # 服务器端
iperf3 -c server_ip # 客户端

网络调优策略#

1. 网络缓冲区调整#

Terminal window
# 查看网络缓冲区设置
sysctl net.core.rmem_max
ssysctl net.core.wmem_max
# 设置网络缓冲区
sysctl -w net.core.rmem_max=16777216 # 接收缓冲区最大16MB
sysctl -w net.core.wmem_max=16777216 # 发送缓冲区最大16MB
# 设置默认缓冲区
sysctl -w net.core.rmem_default=8388608 # 默认接收缓冲区8MB
sysctl -w net.core.wmem_default=8388608 # 默认发送缓冲区8MB
# 设置TCP缓冲区
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216" # TCP接收缓冲区
sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216" # TCP发送缓冲区

2. TCP参数调整#

Terminal window
# 启用TCP SYN cookies
sysctl -w net.ipv4.tcp_syncookies=1
# 调整TCP连接超时
sysctl -w net.ipv4.tcp_fin_timeout=30 # FIN超时
ssysctl -w net.ipv4.tcp_keepalive_time=600 # 保活时间
ssysctl -w net.ipv4.tcp_keepalive_intvl=60 # 保活间隔
ssysctl -w net.ipv4.tcp_keepalive_probes=5 # 保活探测次数
# 调整TCP连接队列
sysctl -w net.core.somaxconn=65535 # 最大连接数
sysctl -w net.ipv4.tcp_max_syn_backlog=65535 # SYN队列长度
# 启用TCP快速打开
sysctl -w net.ipv4.tcp_fastopen=3
# 启用TCP时间戳
sysctl -w net.ipv4.tcp_timestamps=1
# 启用TCP选择性确认
sysctl -w net.ipv4.tcp_sack=1
# 启用TCP窗口缩放
sysctl -w net.ipv4.tcp_window_scaling=1

3. 网络接口调优#

Terminal window
# 查看网络接口配置
ethtool -k eth0 # 查看特性
nethtool -i eth0 # 查看驱动
nethtool -S eth0 # 查看统计信息
# 启用网络接口特性
nethtool -K eth0 tso on # 启用TCP分段卸载
nethtool -K eth0 gso on # 启用通用分段卸载
nethtool -K eth0 gro on # 启用通用接收卸载
nethtool -K eth0 lro on # 启用大接收卸载
nethtool -K eth0 rx on # 启用接收校验和卸载
nethtool -K eth0 tx on # 启用发送校验和卸载
# 调整网络接口MTU
ifconfig eth0 mtu 9000 # 设置为9000(jumbo帧)
ip link set eth0 mtu 9000
# 调整网络接口队列长度
ethtool -G eth0 rx 4096 tx 4096 # 设置接收和发送队列长度

内核参数配置#

内核参数的查看和修改#

Terminal window
# 查看所有内核参数
sysctl -a
# 查看特定内核参数
sysctl net.ipv4.ip_forward
# 修改内核参数(临时)
sysctl -w net.ipv4.ip_forward=1
# 永久修改内核参数
sudo nano /etc/sysctl.conf
# 添加或修改参数
# 应用内核参数
sysctl -p
# 查看内核版本
uname -r
cat /proc/version

常用内核参数配置#

1. 安全相关参数#

Terminal window
# 禁用IP源路由
sysctl -w net.ipv4.conf.all.accept_source_route=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
# 禁用ICMP重定向
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.default.accept_redirects=0
sysctl -w net.ipv4.conf.all.secure_redirects=0
sysctl -w net.ipv4.conf.default.secure_redirects=0
# 启用反向路径过滤
sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1
# 禁用IPv6路由重定向
sysctl -w net.ipv6.conf.all.accept_redirects=0
sysctl -w net.ipv6.conf.default.accept_redirects=0
# 启用SYN cookies
sysctl -w net.ipv4.tcp_syncookies=1
# 禁用ICMP广播应答
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
# 启用ignore_bogus_error_responses
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1

2. 性能相关参数#

Terminal window
# 调整文件句柄限制
sysctl -w fs.file-max=65536 # 系统最大文件句柄数
# 调整进程限制
sysctl -w kernel.pid_max=65536 # 最大进程ID
# 调整信号队列
sysctl -w kernel.sem="250 32000 100 128" # 信号量设置
# 调整共享内存
sysctl -w kernel.shmmax=134217728 # 最大共享内存段大小(128MB)
sysctl -w kernel.shmall=2097152 # 共享内存总页数
# 调整消息队列
sysctl -w kernel.msgmax=65536 # 最大消息大小
sysctl -w kernel.msgmnb=65536 # 消息队列大小
# 调整TCP连接
sysctl -w net.ipv4.tcp_max_tw_buckets=5000 # TIME_WAIT状态最大连接数
sysctl -w net.ipv4.tcp_fin_timeout=30 # FIN超时
# 调整网络缓冲区
sysctl -w net.core.rmem_max=16777216 # 接收缓冲区最大值
sysctl -w net.core.wmem_max=16777216 # 发送缓冲区最大值
# 调整内存回收
sysctl -w vm.swappiness=10 # 交换空间使用倾向
sysctl -w vm.dirty_background_ratio=10 # 后台脏页比率
sysctl -w vm.dirty_ratio=20 # 脏页比率

3. 稳定性相关参数#

Terminal window
# 调整内核panic设置
sysctl -w kernel.panic=10 # panic后10秒自动重启
# 调整OOM killer设置
sysctl -w vm.overcommit_memory=1 # 内存分配策略
sysctl -w vm.panic_on_oom=0 # OOM时不panic
# 调整软锁设置
sysctl -w kernel.softlockup_panic=0 # 软锁时不panic
# 调整内核日志缓冲区
sysctl -w kernel.printk="4 4 1 7" # 控制台日志级别
# 调整内核栈大小
sysctl -w kernel.threads-max=65536 # 最大线程数

系统服务调优#

服务管理#

Terminal window
# 查看系统服务
systemctl list-units --type=service
# 查看运行中的服务
systemctl list-units --type=service --state=running
# 查看启动的服务
systemctl list-unit-files --type=service | grep enabled
# 禁用不必要的服务
systemctl stop service_name
systemctl disable service_name
# 启用必要的服务
systemctl start service_name
systemctl enable service_name

常用服务调优#

1. SSH服务调优#

Terminal window
# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config
# 调优SSH配置
# Port 22
# Protocol 2
# PermitRootLogin no
# MaxAuthTries 3
# MaxSessions 10
# ClientAliveInterval 300
# ClientAliveCountMax 2
# Compression yes
# UseDNS no
# GSSAPIAuthentication no
# 重启SSH服务
sudo systemctl restart sshd

2. NTP服务调优#

Terminal window
# 编辑NTP配置文件
sudo nano /etc/ntp.conf
# 调优NTP配置
# server 0.ubuntu.pool.ntp.org iburst
# server 1.ubuntu.pool.ntp.org iburst
# server 2.ubuntu.pool.ntp.org iburst
# server 3.ubuntu.pool.ntp.org iburst
# restrict -4 default kod notrap nomodify nopeer noquery
# restrict -6 default kod notrap nomodify nopeer noquery
# restrict 127.0.0.1
# restrict ::1
# 重启NTP服务
sudo systemctl restart ntp

3. 日志服务调优#

Terminal window
# 编辑rsyslog配置文件
sudo nano /etc/rsyslog.conf
# 调优rsyslog配置
# $ModLoad imuxsock # provides support for local system logging
# $ModLoad imklog # provides kernel logging support
# $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# $FileOwner syslog
# $FileGroup adm
# $FileCreateMode 0640
# $DirCreateMode 0755
# $Umask 0022
# $WorkDirectory /var/spool/rsyslog
# $ActionQueueFileName fwdRule1
# $ActionQueueMaxDiskSpace 1g
# $ActionQueueSaveOnShutdown on
# $ActionQueueType LinkedList
# $ActionResumeRetryCount -1
# local7.* /var/log/boot.log
# 重启rsyslog服务
sudo systemctl restart rsyslog

应用程序调优#

Web服务器调优#

1. Nginx调优#

Terminal window
# 编辑Nginx配置文件
sudo nano /etc/nginx/nginx.conf
# 调优Nginx配置
# user nginx;
# worker_processes auto; # 自动设置为CPU核心数
# worker_connections 1024; # 每个worker的最大连接数
# keepalive_timeout 65; # 保持连接超时
# gzip on; # 启用gzip压缩
# gzip_comp_level 6; # 压缩级别
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# client_max_body_size 10M; # 客户端最大请求体大小
# 重启Nginx服务
sudo systemctl restart nginx

2. Apache调优#

Terminal window
# 编辑Apache配置文件
sudo nano /etc/apache2/apache2.conf # Debian/Ubuntu
sudo nano /etc/httpd/conf/httpd.conf # RHEL/CentOS
# 调优Apache配置
# StartServers 5
# MinSpareServers 5
# MaxSpareServers 10
# MaxRequestWorkers 150
# MaxConnectionsPerChild 0
# KeepAlive On
# KeepAliveTimeout 5
# MaxKeepAliveRequests 100
# 启用必要的模块
sudo a2enmod headers # 启用头部模块
sudo a2enmod expires # 启用过期模块
sudo a2enmod deflate # 启用压缩模块
sudo a2enmod rewrite # 启用重写模块
# 重启Apache服务
sudo systemctl restart apache2 # Debian/Ubuntu
sudo systemctl restart httpd # RHEL/CentOS

数据库调优#

1. MySQL/MariaDB调优#

Terminal window
# 编辑MySQL配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # Debian/Ubuntu
sudo nano /etc/my.cnf.d/mariadb-server.cnf # RHEL/CentOS
# 调优MySQL配置
# [mysqld]
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
# bind-address=127.0.0.1
# key_buffer_size=16M
# max_allowed_packet=16M
# thread_stack=192K
# thread_cache_size=8
# myisam-recover-options=BACKUP
# max_connections=100
# query_cache_limit=1M
# query_cache_size=16M
# log_error=/var/log/mysql/error.log
# expire_logs_days=10
# max_binlog_size=100M
# 重启MySQL服务
sudo systemctl restart mysql # Debian/Ubuntu
sudo systemctl restart mariadb # RHEL/CentOS

2. PostgreSQL调优#

Terminal window
# 编辑PostgreSQL配置文件
sudo nano /etc/postgresql/13/main/postgresql.conf # Debian/Ubuntu
sudo nano /var/lib/pgsql/data/postgresql.conf # RHEL/CentOS
# 调优PostgreSQL配置
# shared_buffers = 128MB # 共享缓冲区大小
# work_mem = 4MB # 工作内存大小
# maintenance_work_mem = 64MB # 维护工作内存大小
# effective_cache_size = 512MB # 有效缓存大小
# checkpoint_completion_target = 0.9 # 检查点完成目标
# wal_buffers = 16MB # WAL缓冲区大小
# default_statistics_target = 100 # 默认统计目标
# random_page_cost = 4.0 # 随机页面成本
# effective_io_concurrency = 200 # 有效I/O并发
# 重启PostgreSQL服务
sudo systemctl restart postgresql # Debian/Ubuntu
sudo systemctl restart postgresql # RHEL/CentOS

系统调优工具#

1. tuned#

Tuned是一个动态系统调优守护进程,可以根据系统的工作负载自动调整系统参数。

Terminal window
# 安装tuned(Debian/Ubuntu)
sudo apt install -y tuned
# 安装tuned(RHEL/CentOS)
sudo yum install -y tuned
# 启动并启用tuned服务
sudo systemctl start tuned
sudo systemctl enable tuned
# 查看tuned状态
sudo systemctl status tuned
# 查看可用的调优配置文件
sudo tuned-adm list
# 应用调优配置文件
sudo tuned-adm profile balanced # 平衡模式
sudo tuned-adm profile performance # 性能模式
sudo tuned-adm profile powersave # 省电模式
sudo tuned-adm profile throughput-performance # 吞吐量性能模式
sudo tuned-adm profile latency-performance # 延迟性能模式
# 查看当前应用的调优配置文件
sudo tuned-adm active
# 禁用调优配置文件
sudo tuned-adm off

2. sysstat#

Sysstat是一个系统性能监控工具集,包括sar、iostat、mpstat等命令。

Terminal window
# 安装sysstat(Debian/Ubuntu)
sudo apt install -y sysstat
# 安装sysstat(RHEL/CentOS)
sudo yum install -y sysstat
# 配置sysstat
sudo nano /etc/sysstat/sysstat # Debian/Ubuntu
sudo nano /etc/sysconfig/sysstat # RHEL/CentOS
# 启动并启用sysstat服务
sudo systemctl start sysstat
sudo systemctl enable sysstat
# 使用sar命令查看系统性能
sar -u 1 # CPU使用情况
sar -r 1 # 内存使用情况
sar -d 1 # 磁盘使用情况
sar -n DEV 1 # 网络使用情况
sar -q 1 # 系统负载情况

3. htop#

Htop是一个交互式的进程查看器,比top更加功能强大。

Terminal window
# 安装htop(Debian/Ubuntu)
sudo apt install -y htop
# 安装htop(RHEL/CentOS)
sudo yum install -y htop
# 运行htop
top
# htop快捷键
# F1: 帮助
# F2: 设置
# F3: 搜索
# F4: 过滤
# F5: 树状视图
# F6: 排序
# F7: 降低优先级
# F8: 提高优先级
# F9: 终止进程
# F10: 退出

4. iotop#

Iotop是一个实时磁盘I/O监控工具,可以查看进程的磁盘I/O使用情况。

Terminal window
# 安装iotop(Debian/Ubuntu)
sudo apt install -y iotop
# 安装iotop(RHEL/CentOS)
sudo yum install -y iotop
# 运行iotop
iotop
# iotop选项
# -o: 只显示有I/O活动的进程
# -b: 批处理模式
# -n: 显示次数
# -d: 刷新间隔

系统调优最佳实践#

1. 监控先行#

在进行系统调优之前,首先要使用监控工具收集系统性能数据,了解系统的当前状态,识别性能瓶颈。

2. 循序渐进#

系统调优应该循序渐进,每次只修改一个参数,然后观察系统的变化,避免同时修改多个参数,导致无法确定哪个参数的影响。

3. 测试验证#

在修改系统参数后,应该进行充分的测试,验证调优效果,确保系统的性能得到改善,同时保持系统的稳定性。

4. 文档记录#

记录系统调优的过程,包括修改的参数、测试结果和调优效果,便于未来参考和系统维护。

5. 定期调整#

系统的工作负载和硬件环境会不断变化,因此需要定期检查系统性能,调整系统参数,保持系统的最佳性能。

6. 安全第一#

在进行系统调优时,要注意系统的安全性,避免因为追求性能而牺牲系统的安全性。

7. 硬件升级#

如果系统调优后性能仍然无法满足需求,考虑升级硬件,如增加CPU、内存、更换SSD等。

8. 负载测试#

在生产环境中,应该进行负载测试,模拟真实的工作负载,验证系统在高负载下的性能和稳定性。

常见问题及解决方案#

1. 系统负载过高#

症状:系统负载过高,CPU、内存或磁盘使用接近100%。

解决方案

  • 识别占用资源的进程,使用topiotop等工具
  • 调整进程优先级,使用nicerenice命令
  • 优化应用程序,如调整Web服务器配置、数据库配置等
  • 增加系统资源,如升级CPU、内存、更换SSD等

2. 系统响应缓慢#

症状:系统响应缓慢,命令执行时间长,应用程序启动慢。

解决方案

  • 检查系统负载,使用uptimetop命令
  • 检查磁盘I/O,使用iostatiotop命令
  • 检查内存使用,使用freevmstat命令
  • 优化系统参数,如调整内存回收策略、磁盘I/O调度器等

3. 系统崩溃或重启#

症状:系统突然崩溃或重启,没有明显的原因。

解决方案

  • 检查系统日志,使用dmesgjournalctl命令
  • 检查硬件故障,如内存、磁盘、电源等
  • 检查内核参数,如调整OOM killer设置、内核panic设置等
  • 更新系统和内核,修补已知的安全漏洞和bug

4. 网络连接问题#

症状:网络连接缓慢,丢包率高,连接超时。

解决方案

  • 检查网络接口状态,使用ifconfigip命令
  • 检查网络路由,使用routeip route命令
  • 检查网络防火墙,使用iptablesfirewalld命令
  • 优化网络参数,如调整TCP缓冲区、启用TCP SYN cookies等

5. 应用程序性能问题#

症状:应用程序性能下降,响应时间变长,吞吐量降低。

解决方案

  • 检查应用程序日志,查找错误和警告信息
  • 优化应用程序配置,如调整Web服务器、数据库配置等
  • 优化应用程序代码,如减少数据库查询、优化算法等
  • 增加应用程序资源,如调整JVM参数、增加PHP内存限制等

总结#

本文介绍了Linux系统中常用的系统调优和内核参数配置命令和技巧,包括CPU调优、内存调优、磁盘I/O调优、网络调优、内核参数配置、系统服务调优和应用程序调优等方面的内容。通过掌握这些命令和技巧,系统管理员可以更高效地优化系统性能,提高系统的响应速度和吞吐量,增强系统的稳定性和安全性。

系统调优是一个持续的过程,需要系统管理员不断学习和实践,积累经验。在实际工作中,系统管理员应该根据系统的实际情况,制定合理的调优策略,循序渐进地进行系统调优,同时保持系统的稳定性和安全性。通过不断的努力,可以使系统达到最佳的性能状态,满足业务的需求。

练习#

  1. 使用topvmstatiostat等命令监控系统性能,识别性能瓶颈。
  2. 调整CPU调度策略和进程优先级,提高系统的响应速度。
  3. 配置大页内存,提高内存密集型应用的性能。
  4. 调整磁盘I/O调度器和预读设置,提高磁盘I/O性能。
  5. 优化网络参数,提高网络吞吐量和连接数。
  6. 配置内核参数,增强系统的安全性和稳定性。
  7. 调优Web服务器和数据库,提高应用程序的性能。
  8. 使用tuned工具自动调整系统参数,适应不同的工作负载。
  9. 进行负载测试,验证系统在高负载下的性能和稳定性。
  10. 制定系统调优计划,定期检查和调整系统参数,保持系统的最佳性能。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
Linux系统调优和内核参数配置
https://blog.vanilla.net.cn/posts/2026-02-05-linux-system-tuning-kernel/
作者
鹁鸪
发布于
2026-02-04
许可协议
CC BY-NC-SA 4.0

评论区

目录