django + postgresql 数据库连接过多导致 timeout, 想问大佬应该如何排查?

2020-11-10 08:10:20 +08:00
 chaleaoch

主要是想排查是哪个 api 或者哪几个 api, 在哪种情况下导致 连接过多. 没有思路, 请大佬指点一下.

1910 次点击
所在节点    程序员
4 条回复
liuzhaowei55
2020-11-10 08:27:17 +08:00
看看 pgsql 连接数设置,然后是程序连接池大小是否合理,然后是查看慢查询还有锁表操作,最后看看程序是否已经到了理论瓶颈
kyrre
2020-11-10 08:30:33 +08:00
先看看 Pg 里的 slow query log,然后把最慢的那些 sql 跳出来 分析执行计划,看看是不是用上了索引
encro
2020-11-10 09:22:19 +08:00
https://c4ys.com/archives/2349
Mysql 必知必会 -- 思想上基本也适用于 postgres


二楼已经讲了最重要的,我完善补充下:

1,开启慢日志,记录运行慢的语句,并用工具分析;
2, EXPLAIN 分析慢查询
3,`select * from pg_stat_activity`查看当前运行的进程 ;
4, nginx 开启 access 记录 cgi 执行时间;
5, 针对慢页面开启


参考:

* Django 数据库连接优化 https://docs.djangoproject.com/zh-hans/3.1/topics/db/optimization/
* Basic Performance Optimization in Django https://medium.com/@ryleysill93/basic-performance-optimization-in-django-ebd19089a33f
* PostgreSQL Performance Tips https://www.postgresql.org/docs/current/performance-tips.html
flyingfz
2020-11-10 09:26:11 +08:00
你需要 pg-bouncer

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/723420

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX