You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何8核系统中Gunicorn的16个进程仅运行在单个CPU核心?

解决Gunicorn Worker全部集中在单个CPU核心的问题
  • 先验证htop显示的准确性
    htop默认显示的是进程最后运行的CPU核心,不是固定绑定的核心,空闲进程大概率会停留在同一个核心显示。用更准确的命令查看实时CPU分布:

    ps -eo pid,pcpu,psr,cmd | grep gunicorn | sort -k3
    

    其中psr列就是进程当前运行的核心编号,这个数据比htop的视觉显示更可靠。

  • 测试高并发场景下的核心分布
    默认的sync worker在请求量低时大多处于休眠状态,操作系统调度器不会没事就切换它们的核心。用压测工具模拟流量:

    ab -n 1000 -c 50 http://你的应用地址/
    

    此时worker开始处理请求,调度器会自动把它们分配到不同核心,再看ps或htop的显示应该会分散开。如果是CPU密集型应用,建议换成gevent这类异步worker,调度效率更高。

  • 检查进程核心绑定和系统调度配置

    • 用taskset -p <worker-pid>查看单个worker的核心绑定,如果输出是mask: ff(对应八核物理核心+超线程的16个逻辑核心),说明没有被固定绑定,调度器会自动分配。
    • 如果你用systemd管理gunicorn服务,检查服务配置文件里有没有CPUAffinity参数,要是设置了CPUAffinity=1,所有子进程都会被限制在CPU1上,删掉这个配置重启服务即可。
  • 确认系统核心配置
    用lscpu查看物理核心和逻辑核心数量,八核处理器开超线程的话应该有16个逻辑核心。如果系统只识别到少数核心,那肯定没法分散worker,这种情况需要检查BIOS里的超线程设置或系统内核参数。

内容的提问来源于stack exchange,提问作者abhay patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:00:58