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

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

  •  
  •   chaleaoch · 2020-11-10 08:10:20 +08:00 · 1903 次点击
    这是一个创建于 1479 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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