# gunicorn app.main:app -k uvicorn.workers.UvicornWorker –bind 127.0.0.1:8000 –workers 4 –chdir /var/www/fastapi/demo
[2025-11-26 14:26:13 +0800] [2959617] [INFO] Starting gunicorn 23.0.0
[2025-11-26 14:26:13 +0800] [2959617] [ERROR] Connection in use: (‘127.0.0.1’, 8000)
[2025-11-26 14:26:13 +0800] [2959617] [ERROR] connection to (‘127.0.0.1’, 8000) failed: [Errno 98] Address already in use

[2025-11-26 14:26:18 +0800] [2959617] [ERROR] Can’t connect to (‘127.0.0.1’, 8000)
(venv) [root]#

解释

本机 127.0.0.1:8000 已经有进程在占用,Gunicorn 无法绑定这个端口。

Errno 98 就是 Linux 下的“地址已在使用中”的标准错误码。

解决

查看哪个进程占用了端口

# lsof -i:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 2072754 www 33u IPv4 519083228 0t0 TCP VM-0-9-tencentos:56732->VM-0-9:irdmi (CLOSE_WAIT)
httpd 2072754 www 35u IPv4 520193298 0t0 TCP VM-0-9-tencentos:46326->VM-0-9:irdmi (CLOSE_WAIT)
httpd 2072755 www 34u IPv4 519774594 0t0 TCP VM-0-9-tencentos:38884->VM-0-9:irdmi (CLOSE_WAIT)
gunicorn 2087417 root 5u IPv4 511884823 0t0 TCP VM-0-9-tencentos:irdmi (LISTEN)
gunicorn 2089184 root 5u IPv4 511884823 0t0 TCP VM-0-9-tencentos:irdmi (LISTEN)
gunicorn 2089185 root 5u IPv4 511884823 0t0 TCP VM-0-9-tencentos:irdmi (LISTEN)
httpd 2178437 www 33u IPv4 520103416 0t0 TCP VM-0-9-tencentos:44256->VM-0-9:irdmi (CLOSE_WAIT)
httpd 2178437 www 35u IPv4 520193608 0t0 TCP VM-0-9-tencentos:46346->VM-0-9:irdmi (CLOSE_WAIT)

说明 8000 端口已经有 Gunicorn 进程在监听,所以你再次启动 Gunicorn 就会报:

Connection in use / Address already in use

停掉旧的 Gunicorn 进程

你可以一次性杀掉端口上所有 Gunicorn 进程:

kill -9 2087417 2089184 2089185

或者用一条命令批量杀掉:

pkill -f “gunicorn app.main:app”

注:pkill -f 会匹配命令行中包含 “gunicorn app.main:app” 的进程,确保不会误杀其他重要进程。

作者 admin

百度广告效果展示