Get the FREE Ultimate OpenClaw Setup Guide →
npx machina-cli add skill chaterm/terminal-skills/tuning --openclaw
Files (1)
SKILL.md
4.1 KB

系统调优

概述

内核参数、文件系统、网络优化技能。

内核参数调优

内存管理

# /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 65535

systemd 服务

# /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 2

CPU 调优

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_governor

NUMA 优化

# 查看 NUMA 信息
numactl --hardware
numastat

# 绑定 NUMA 节点
numactl --cpunodebind=0 --membind=0 ./program

# 查看进程 NUMA 分布
numastat -p PID

CPU 亲和性

# 查看亲和性
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 | grep net
内存参数sysctl -a | grep vm
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

Source

git clone https://github.com/chaterm/terminal-skills/blob/main/performance/tuning/SKILL.mdView on GitHub

Overview

tuning 技能聚焦于系统级的性能调优,包括内核参数(通过 sysctl、/etc/sysctl.d 配置)、文件描述符与进程限制、磁盘 IO、网络栈参数,以及 CPU/NUMA 的调优。你可以为常见场景(如 Web 服务器、数据库、高并发服务)制定可復现的调优方案,并通过基线与监控验证效果。

How This Skill Works

本技能通过分析当前系统配置与工作负载瓶颈,生成可执行的参数配置片段和变更步骤。例如,基于工作负载创建 /etc/sysctl.d/ 文件、设置 ulimit 或 systemd Limits、调整 IO 调度和挂载选项,并提供验证与回滚方案。你还可以输出逐步执行的命令序列,确保改动可重复、可追踪。

When to Use It

  • 当你需要提升网络吞吐、并发连接与延迟时
  • 当数据库或大规模应用需要更好的内存管理与缓存策略时
  • 当磁盘 IO、吞吐或随机访问性能成为瓶颈时
  • 当你在容器化或云环境中工作,需要对资源限制进行严格控制时
  • 进行性能基线、容量规划或故障排查时

Quick Start

  1. 1. 评估场景与瓶颈:收集现有参数、资源使用情况和性能指标(CPU、内存、磁盘、网络)。
  2. 2. 选择调优领域:内存、网络、文件描述符/进程限制、IO 调度、CPU/NUMA。
  3. 3. 创建配置片:在 /etc/sysctl.d、ulimit、systemd 以及 /etc/fstab 等中加入变更片段,并准备回滚计划。
  4. 4. 应用与验证:应用配置并运行基准测试,监控关键指标,确认改动带来期望效果。

Best Practices

  • 逐步变更:每次只调整一个维度,避免同时变更太多参数以便定位影响。
  • 做基线与回滚:在生产环境前保存原始值,确保有明确的回滚路径。
  • 按工作负载对齐:如数据库优先考虑内存分配与 I/O 策略,Web 服务关注连接数与缓冲区。
  • 记录变更与证据:对每次调优输出变更日志、基线数据与验证结果,便于回顾。
  • 结合监控与告警:部署后持续关注延迟、吞吐、CPU/内存、IO 等指标,必要时回滚或进一步微调。

Example Use Cases

  • 场景:Web 服务器优化。对 TCP、连接队列和文件描述符进行优化,例如设置 somaxconn、tcp_tw_reuse、netdev_backlog,以提升并发连接处理能力。
  • 场景:数据库服务器优化。调整 swappiness、dirty_ratio、dirty_background_ratio,启用大页内存以减少页面碎片,并配置适当的内存提交策略。
  • 场景:高并发场景。编写一键化脚本,同时应用网络、文件描述符与内存参数,并通过基线测试确保稳定性。
  • 场景:容器/云环境调优。在宿主机层面设置资源限制(ulimit、limits.conf、Systemd 限制),在需要时通过 gru b 引导参数或 cgroup 设置优化 IO 与网络行为。
  • 场景:IO 密集型应用。通过调整 IO 调度器、预读、挂载选项和数据库日志策略,提升吞吐与降低延迟。

Frequently Asked Questions

Add this skill to your agents

Related Skills

Sponsor this space

Reach thousands of developers