• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chaleaoch
V2EX  ›  程序员

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

  •  
  •   chaleaoch · Nov 10, 2020 · 2338 views
    This topic created in 2072 days ago, the information mentioned may be changed or developed.

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

    4 replies    2020-11-10 09:26:11 +08:00
    liuzhaowei55
        1
    liuzhaowei55  
       Nov 10, 2020 via Android
    看看 pgsql 连接数设置,然后是程序连接池大小是否合理,然后是查看慢查询还有锁表操作,最后看看程序是否已经到了理论瓶颈
    kyrre
        2
    kyrre  
       Nov 10, 2020
    先看看 Pg 里的 slow query log,然后把最慢的那些 sql 跳出来 分析执行计划,看看是不是用上了索引
    encro
        3
    encro  
       Nov 10, 2020   ❤️ 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  
       Nov 10, 2020
    你需要 pg-bouncer
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1097 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 18:17 · PVG 02:17 · LAX 11:17 · JFK 14:17
    ♥ Do have faith in what you're doing.