Gil*_*ili 8 postgresql profiler
我的 Postgresql 服务器正在使用 100% cpu。我想弄清楚单个查询是否很慢,或者我只是开始用过多的请求来敲打服务器。
是否有某种我可以附加的分析器让我知道:
如果你使用的是Linux或者亲戚,你可以使用top来查看最上面的进程是什么。如果您在顶部点击“c”,它应该会显示进程标题,这会告诉您是否有选择、更新、插入,或者是否有其他维护任务占用了 CPU(或者您是否已被黑客攻击并且现在正在运行)。为某人挖掘加密货币,这最近似乎很常见)。您还可以查看是否有少量进程各自使用一个 CPU,或者是否有大量进程都在争夺各自的 CPU 份额。
您可以使用 来pg_stat_statements跟踪每个查询运行的次数以及运行时间。这报告的是挂钟时间,而不是 CPU 时间。如果您打开track_io_timing,您还可以获取从磁盘读取数据所花费的时间,这很好,但仍然不会为您提供 CPU 时间,因为有些时间可能会用于等待锁或等待 CPU 时间片。
如果问题是间歇性的并且难以在行为中发现,那么auto_explain和log_min_duration_statement可能会有所帮助。
对于更高级的分析,您可以使用系统工具,例如perf top或strace -y -p <pid>甚至gdb. 这些通常需要相当多的 PostgreSQL 内部知识才能解释它们。这些通常用于研究改进 PostgreSQL 本身(即未来版本)的方法,但我经常发现它们也可以帮助诊断调整问题。您必须安装调试符号才能最大限度地利用perf或gdb。
| 归档时间: |
|
| 查看次数: |
5605 次 |
| 最近记录: |