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

如何读取/追踪Gunicorn的worker connections当前连接数?

Gunicorn 如何追踪 worker connections 对应的实际并发连接数?

Gunicorn本身没有内置的直接查看当前/历史并发连接数的功能,但可以通过以下几种方式实现你的需求:

  • 利用StatsD集成监控
    启动Gunicorn时启用StatsD支持,命令行加参数--statsd-host=localhost:8125,或者在配置文件里设置statsd_host = "localhost:8125"。Gunicorn会自动发送一系列监控指标到StatsD,其中gunicorn.requests.active就是当前活跃的请求数(和并发连接数强相关)。你可以用监控工具收集这些数据,就能直观看到连接数是否接近worker数量 × worker connections的总上限,也能回溯历史峰值。

  • 系统级命令实时统计
    用ss或netstat直接统计Gunicorn监听端口的活跃连接数,比如你的Gunicorn跑在8000端口:

    ss -tulnp | grep :8000 | grep ESTABLISHED | wc -l
    

    这个命令会返回当前处于已建立状态的连接数。如果要追踪历史数据,可以把这个命令做成定时任务(比如用cron),定期将结果写入日志或监控系统。

  • 自定义WSGI中间件统计
    在你的Python应用里加一个简单的中间件,维护活跃连接计数器和历史最大值:

    class ConnectionCounterMiddleware:
        def __init__(self, app):
            self.app = app
            self.active = 0
            self.max_active = 0
    
        def __call__(self, environ, start_response):
            self.active += 1
            if self.active > self.max_active:
                self.max_active = self.active
            try:
                return self.app(environ, start_response)
            finally:
                self.active -= 1
    
    # 挂载到你的WSGI应用上
    app = ConnectionCounterMiddleware(your_wsgi_application)
    

    之后可以加一个内部接口,返回当前活跃数和历史峰值,比如:

    # 示例Flask接口
    @app.route('/connection-stats')
    def connection_stats():
        return {"active_connections": app.active, "max_connections": app.max_active}
    

注意:worker connections是单worker的最大并发连接数,服务器总并发上限是worker数量 × worker connections,监控时要结合这个数值判断是否需要调整配置。

内容的提问来源于stack exchange,提问作者Johnny Metz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:30:48