tuning
Scannednpx machina-cli add skill chaterm/terminal-skills/tuning --openclaw系统调优
概述
内核参数、文件系统、网络优化技能。
内核参数调优
内存管理
# /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. 评估场景与瓶颈:收集现有参数、资源使用情况和性能指标(CPU、内存、磁盘、网络)。
- 2. 选择调优领域:内存、网络、文件描述符/进程限制、IO 调度、CPU/NUMA。
- 3. 创建配置片:在 /etc/sysctl.d、ulimit、systemd 以及 /etc/fstab 等中加入变更片段,并准备回滚计划。
- 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
Related Skills
sql-optimization
chaterm/terminal-skills
SQL 优化与调优
configuration
chaterm/terminal-skills
OpenClaw 配置管理
hardening
chaterm/terminal-skills
--- name: hardening description: 系统加固 version: 1.0.0 author: terminal-skills tags: [security, hardening, cis, baseline, sysctl] --- # 系统加固 ## 概述 系统加固、基线配置、CIS 标准技能。 ## SSH 加固 ### 配置优化 ```bash # /etc/ssh/sshd_config # 禁用 root 登录 PermitRootLogin no # 禁用密码认证 PasswordAuthentication no PubkeyAuthent
smart-sourcing
athola/claude-night-market
balancing accuracy with token efficiency.
python-performance
athola/claude-night-market
'Consult this skill for Python performance profiling and optimization.
code-review
laragentic/agents
Analyze code for security, performance, and best practices