
Tuning
- 65 installs
- 50 repo stars
- Updated March 3, 2026
- chaterm/terminal-skills
Tune Linux system and kernel parameters for performance from the terminal.
About
Reference for adjusting Linux performance parameters such as kernel and system settings via the command line. Used when a developer optimizes server performance.
- Kernel and system parameter tuning
- Linux performance optimization from the terminal
Tuning by the numbers
- 65 all-time installs (skills.sh)
- Ranked #673 of 1,039 Cloud & Infrastructure skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/chaterm/terminal-skills --skill tuningAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 65 |
|---|---|
| repo stars | ★ 50 |
| Last updated | March 3, 2026 |
| Repository | chaterm/terminal-skills ↗ |
What it does
Tune Linux system and kernel parameters for performance from the terminal.
Files
系统调优
概述
内核参数、文件系统、网络优化技能。
内核参数调优
内存管理
# /etc/sysctl.d/99-memory.conf
# 减少交换倾向
vm.swappiness = 10
# 脏页刷新
vm.dirty_ratio = 20
vm.dirty_background_ratio = 5
# 内存过量提交
vm.overcommit_memory = 1
vm.overcommit_ratio = 80
# 最大内存映射数
vm.max_map_count = 262144
# 应用
sysctl -p /etc/sysctl.d/99-memory.conf网络调优
# /etc/sysctl.d/99-network.conf
# TCP 缓冲区
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 连接队列
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# TIME_WAIT
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_tw_buckets = 65535
# 端口范围
net.ipv4.ip_local_port_range = 1024 65535
# Keep-Alive
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3文件系统
# /etc/sysctl.d/99-fs.conf
# 文件句柄
fs.file-max = 2097152
fs.nr_open = 2097152
# inotify
fs.inotify.max_user_watches = 524288
fs.inotify.max_user_instances = 512文件描述符限制
ulimit 配置
# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
root soft nofile 65535
root hard nofile 65535systemd 服务
# /etc/systemd/system/myapp.service.d/limits.conf
[Service]
LimitNOFILE=65535
LimitNPROC=65535磁盘 IO 调优
IO 调度器
# 查看当前调度器
cat /sys/block/sda/queue/scheduler
# 设置调度器
echo deadline > /sys/block/sda/queue/scheduler
echo noop > /sys/block/sda/queue/scheduler # SSD
echo mq-deadline > /sys/block/nvme0n1/queue/scheduler
# 永久设置 (GRUB)
GRUB_CMDLINE_LINUX="elevator=deadline"预读设置
# 查看预读
blockdev --getra /dev/sda
# 设置预读 (KB)
blockdev --setra 4096 /dev/sda挂载选项
# /etc/fstab
# SSD 优化
/dev/sda1 /data ext4 defaults,noatime,nodiratime,discard 0 2
# 数据库优化
/dev/sdb1 /mysql ext4 defaults,noatime,barrier=0 0 2CPU 调优
CPU 频率
# 查看调速器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 设置性能模式
cpupower frequency-set -g performance
# 或直接设置
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governorNUMA 优化
# 查看 NUMA 信息
numactl --hardware
numastat
# 绑定 NUMA 节点
numactl --cpunodebind=0 --membind=0 ./program
# 查看进程 NUMA 分布
numastat -p PIDCPU 亲和性
# 查看亲和性
taskset -p PID
# 设置亲和性
taskset -c 0-3 ./program
taskset -pc 0-3 PID常见场景
场景 1:Web 服务器优化
# /etc/sysctl.d/99-web.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.netdev_max_backlog = 65535
# 文件描述符
fs.file-max = 2097152场景 2:数据库服务器优化
# /etc/sysctl.d/99-database.conf
vm.swappiness = 1
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
vm.overcommit_memory = 1
# 大页内存
vm.nr_hugepages = 1024场景 3:高并发优化
#!/bin/bash
# 一键优化脚本
# 网络
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_max_syn_backlog=65535
sysctl -w net.ipv4.ip_local_port_range="1024 65535"
# 文件
sysctl -w fs.file-max=2097152
# 内存
sysctl -w vm.swappiness=10调优检查
| 项目 | 检查命令 |
|---|---|
| 文件限制 | ulimit -n |
| 网络参数 | sysctl -a \ |
| 内存参数 | sysctl -a \ |
| IO 调度 | cat /sys/block/*/queue/scheduler |
故障排查
# 检查当前限制
cat /proc/PID/limits
# 检查打开文件数
ls /proc/PID/fd | wc -l
lsof -p PID | wc -l
# 检查网络连接
ss -s
netstat -an | awk '/tcp/ {print $6}' | sort | uniq -c