服务器配置优化需系统性调整进程调度:选用CFS调度器并合理配置实时策略,设置nice值在-5至-10间,绑定关键进程至物理CPU核心,结合cgroup v2限制CPU、内存及IO资源,防止资源争抢。

服务器配置时优化操作系统的进程调度,其核心要点在于,让诸如Tomcat、数据库、Nginx这类关键服务,更稳定且更快速地获取CPU时间,同时要避免低优先级任务长时间抢占资源,或者引发调度抖动现象。这绝非简单地调整一个参数就能看到成效的事情,而是需要将调度策略、优先级、资源约束以及硬件特性等多方面因素综合起来,进行系统性的调整。
选对调度器:CFS是默认,但得用对
Linux默认使用CFS(完全公平调度器),它追求“公平”与“吞吐量”的平衡,适合通用服务器场景。但要注意两点:
- CFS不保证实时响应,对延迟敏感型服务(如高频交易网关)需配合
SCHED_FIFO或SCHED_RR策略(需root权限+chrt命令) - 避免在高负载下盲目启用
RT_RUNTIME_US等实时带宽限制,否则可能阻塞其他关键内核线程 - 可通过
cat /proc/sys/kernel/sched_latency_ns查看当前调度周期,若单核CPU密集型任务多,可适当缩短该值(需测试验证)
合理设置进程nice值:别一上来就-20
给Tomcat、PostgreSQL等主服务提权有用,但必须有分寸:
- 推荐范围:-5 到 -10(root执行
nice -n -5 ./catalina.sh start) - 禁止设为-20——这会和内核线程(如ksoftirqd)竞争,反而导致中断处理延迟升高
- 普通用户启动的服务只能调高nice值(降低优先级),如日志归档脚本设为10,避免干扰主线程
- 用
ps -eo pid,comm,nice --sort=-nice定期检查,防止意外覆盖
绑定CPU核心:减少上下文切换开销
对多核服务器,把核心业务进程固定到特定CPU,能显著降低缓存失效和迁移成本:
- Tomcat工作线程可用
taskset -c 0-3 ja va -jar app.jar限定在前4核 - 数据库主进程建议独占一组物理核(避开超线程逻辑核),例如
taskset -c 4,6,8,10 - 配合
/sys/devices/system/cpu/cpu*/topology/core_siblings_list确认物理核拓扑,避免跨NUMA节点绑核 - 注意:不要绑满所有核,至少留1–2核给系统中断、定时任务和SSH管理
限制资源争抢:用cgroups防“饿死”或“撑爆”
仅靠nice值无法阻止内存或IO耗尽,必须配合资源隔离:
- 用cgroup v2限制Tomcat的CPU配额:
echo "max 500000 1000000" > /sys/fs/cgroup/tomcat/cpu.max(即最多占用50% CPU) - 设置内存上限并启用OOM优先级控制:
echo "max 4G" > /sys/fs/cgroup/tomcat/memory.max,再设echo "100" > /sys/fs/cgroup/tomcat/oom_score_adj降低被杀概率 - 对批量备份任务,用
io.weight将其IO优先级设为10(最低),避免拖慢在线服务
