问题
我在 EC2 实例上安装了 Bugzilla,使用 PostgreSQL RDS 作为数据库。输入几十个错误后,Bugzilla 变得慢得令人难以置信,而且我遇到了很多超时问题。
服务器负载
机器非常空闲:
14:26:00 up 23 days, 4:40, 2 users, load average: 0.15, 0.16, 0.25
%Cpu(s): 0.3 us, 0.3 sy, 0.1 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.2 st
记录证据
Nginx 日志示例(出于安全考虑主机名已更改):
2014/07/16 14:18:32 [error] 6462#0: *5040 upstream timed out
(110: Connection timed out) while reading response header from
upstream, client: my.ip.my.ip, server: bugs.example.com,
request: "POST /post_bug.cgi HTTP/1.1",
upstream: "http://127.0.0.1:8081/post_bug.cgi",
host: "bugs.example.com", referrer: "https://bugs.example.com/post_bug.cgi"
数据库分析
自然,我怀疑是数据库的问题,因此我运行了以下命令:
SELECT datname,
usename,
now()-query_start AS duration,
waiting,
state,
regexp_replace(query, E'[\\t\\n\\r\\s]+',' ', 'g' ) AS query_text
FROM pg_stat_activity
WHERE usename='bugs';
得出的结论是:
datname | usename | duration | waiting | state | query_text
---------+---------+-----------------+---------+-------+------------------------------------------------
bugs | bugs | 00:00:39.899945 | f | idle | SELECT value FROM bug_status WHERE is_open = 1
我认为这是正常的 - 查询没有等待。当我在单独的客户端中执行相同的查询时,它立即返回。
哭喊帮忙...
知道为什么 Bugzilla 在我的系统上这么慢吗?