MySQL: COM_SELECT 以1000/秒的速度增加,但是processlist几乎是空的
MySQL: COM_SELECT increases at a rate of 1000 / sec, but processlist is almost empty
我的 MySQL 服务器之一出现了奇怪的情况。
mysqladmin status
和 SELECT * FROM information_schema.global_status
清楚地表明,MySQL 每秒经历大约 1000 个查询的负载。 top
表示,MySQL 服务器在该 8 核系统上占用了 CPU 的大约 250%。
但如果我这样做 SHOW FULL PROCESSLIST
我只能看到大约 4-5 个条目,查询速度非常快,不到一秒钟即可完成。如果我 运行 mytop
,它显示 2-3 的 qps 和相同的查询,而不是更多。
怎么会这样?什么可以从进程列表中排除?
MySQL 那里是 5.6。
SHOW FULL PROCESSLIST
命令仅向您显示哪些 线程(如 tcp 连接)当前正在 运行ning 以及它们正在做什么。它只显示 4-5 个条目的事实意味着有 4-5 个并发连接。
这些连接很可能每秒处理 200 small/simple 个查询,因此 运行ning 个查询需要 0.005 秒才能完成。
如果您想确定发生了什么,您也可以暂时启用 General Query Log,这样您实际上可以看到服务器 运行 的所有查询。
有 "latency" 和 "throughput"。您有 1000 qps 吞吐量。在使 CPU 核心或其他东西饱和之前,您可能有 几 倍。
从客户端的角度来看,延迟是查询完成所需的时间。如果所有查询都需要 5 毫秒到 运行,并且您发出 1000/秒:
0.005 sec/query * 1000 queries/sec = 5 queries in progress at any moment
数字合理。
我会用 long_query_time = 1
(第二个)打开慢日志并密切关注慢日志——它最终会向您显示 "worst" 查询,即应该调查过。
我的 MySQL 服务器之一出现了奇怪的情况。
mysqladmin status
和 SELECT * FROM information_schema.global_status
清楚地表明,MySQL 每秒经历大约 1000 个查询的负载。 top
表示,MySQL 服务器在该 8 核系统上占用了 CPU 的大约 250%。
但如果我这样做 SHOW FULL PROCESSLIST
我只能看到大约 4-5 个条目,查询速度非常快,不到一秒钟即可完成。如果我 运行 mytop
,它显示 2-3 的 qps 和相同的查询,而不是更多。
怎么会这样?什么可以从进程列表中排除?
MySQL 那里是 5.6。
SHOW FULL PROCESSLIST
命令仅向您显示哪些 线程(如 tcp 连接)当前正在 运行ning 以及它们正在做什么。它只显示 4-5 个条目的事实意味着有 4-5 个并发连接。
这些连接很可能每秒处理 200 small/simple 个查询,因此 运行ning 个查询需要 0.005 秒才能完成。
如果您想确定发生了什么,您也可以暂时启用 General Query Log,这样您实际上可以看到服务器 运行 的所有查询。
有 "latency" 和 "throughput"。您有 1000 qps 吞吐量。在使 CPU 核心或其他东西饱和之前,您可能有 几 倍。
从客户端的角度来看,延迟是查询完成所需的时间。如果所有查询都需要 5 毫秒到 运行,并且您发出 1000/秒:
0.005 sec/query * 1000 queries/sec = 5 queries in progress at any moment
数字合理。
我会用 long_query_time = 1
(第二个)打开慢日志并密切关注慢日志——它最终会向您显示 "worst" 查询,即应该调查过。