MySQL 进程大

MySQL 进程大

好的,所以我不知道这是否是一个重复的问题,如果是的话我很抱歉(搜索后我找不到类似的内容 =/)

我的服务器似乎正在运行一个比正常 mysql 进程更大的进程:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
31382 mysql     20   0  562m  97m 4244 S   73 19.7   2830:07 mysqld

但是当我在 mysql 中执行 SHOW PROCESSLIST 时,一切似乎都处于休眠状态:

mysql> SHOW PROCESSLIST;
+------+-------+-----------+------+---------+------+-------+------------------+
| Id   | User  | Host      | db   | Command | Time | State | Info             |
+------+-------+-----------+------+---------+------+-------+------------------+
| 3982 | dlp_w | localhost | dlp  | Sleep   |  767 |       | NULL             |
| 3983 | dlp_r | localhost | dlp  | Sleep   |    0 |       | NULL             |
| 3986 | dlp_w | localhost | dlp  | Sleep   |  788 |       | NULL             |
| 3987 | dlp_r | localhost | dlp  | Sleep   |    0 |       | NULL             |
| 3988 | dlp_w | localhost | dlp  | Sleep   |  727 |       | NULL             |
| 3989 | dlp_r | localhost | dlp  | Sleep   |    0 |       | NULL             |
| 4019 | root  | localhost | dlp  | Query   |    0 | NULL  | SHOW PROCESSLIST |
| 4020 | dlp_w | localhost | dlp  | Sleep   |  708 |       | NULL             |
| 4021 | dlp_r | localhost | dlp  | Sleep   |    0 |       | NULL             |
| 4022 | dlp_w | localhost | dlp  | Sleep   |   57 |       | NULL             |
| 4023 | dlp_r | localhost | dlp  | Sleep   |    0 |       | NULL             |
| 4024 | dlp_w | localhost | dlp  | Sleep   |  788 |       | NULL             |
| 4025 | dlp_r | localhost | dlp  | Sleep   |    0 |       | NULL             |
+------+-------+-----------+------+---------+------+-------+------------------+

不过,我也感到困惑,为什么有这么多进程处于休眠状态。命令执行完成后,它们难道不应该全部消失吗?

感谢大家的帮助=D

答案1

该过程仅使用 100MB 内存。如果您在配置中启用了任何缓存,它将把查询和结果放入内存中,以便加快下一个查询的速度。

至于休眠连接。它们是来自您的应用程序但尚未关闭的连接。mysql 假设在每次查询后关闭连接,这太可怕了。这意味着您的应用程序必须为每个查询打开一个新连接,并减慢页面加载的渲染时间。

相关内容