V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chaleaoch
V2EX  ›  程序员

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

  •  
  •   chaleaoch · 78 天前 · 1054 次点击
    这是一个创建于 78 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    4 条回复    2020-11-10 09:26:11 +08:00
    liuzhaowei55
        1
    liuzhaowei55   78 天前 via Android
    看看 pgsql 连接数设置,然后是程序连接池大小是否合理,然后是查看慢查询还有锁表操作,最后看看程序是否已经到了理论瓶颈
    kyrre
        2
    kyrre   78 天前
    先看看 Pg 里的 slow query log,然后把最慢的那些 sql 跳出来 分析执行计划,看看是不是用上了索引
    encro
        3
    encro   78 天前   ❤️ 1
    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
        4
    flyingfz   78 天前
    你需要 pg-bouncer
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4834 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:52 · PVG 09:52 · LAX 17:52 · JFK 20:52
    ♥ Do have faith in what you're doing.