我正在运行一个 Django 1.8 站点,由 nginx 和 Gunicorn 提供服务,后端为 Postgres 9.4。
当我连续对站点的 API 进行大量数据密集型调用时,我注意到大约百分之一的查询失败,并提供 nginx 404 页面。
我的第一个假设是 Postgres 数据库在负载下嘎吱作响,但 Postgres 日志实际上向我显示了这一点:
2015-08-06 14:33:43 UTC:127.0.0.1(42287):dbuser@dbname:[3737]: LOG: could not send data to client: Broken pipe
2015-08-06 14:33:43 UTC:127.0.0.1(42287):dbuser@dbname:[3737]: STATEMENT: SELECT ... (psql statement)
2015-08-06 14:33:43 UTC:127.0.0.1(42287):dbuser@dbname:[3737]: FATAL: connection to client lost
2015-08-06 14:33:43 UTC:127.0.0.1(42287):dbuser@dbname:[3737]: STATEMENT: SELECT ... (psql statement)
Run Code Online (Sandbox Code Playgroud)
我认为这意味着 Postgres 实际上运行查询正常,但它无法将数据发送到客户端。
所以我认为要调试这个问题,我实际上应该看看 Django/Gunicorn/nginx。
我的理解正确吗?
是的,看来您已经正确理解了这一点。客户端将数据发送到 postgresql 后端,然后突然断开连接(或被终止)。该消息基本上是“我有一个答案给你,但我无处可发送!”
我肯定会查看其他服务的日志并比较时间戳,以尝试更深入地了解正在发生的情况。
希望有帮助。=)
归档时间: |
|
查看次数: |
23454 次 |
最近记录: |