Debian 在 MySQL 关闭时挂起

Debian 在 MySQL 关闭时挂起

我的一个网站有太多的 MySql 连接,我在脚本中做了一些性能改进并关闭了一些昂贵的查询,以使该网站再次更易于访问。

因为我的进程列表中充满了 100% 的查询,所以我认为它将有助于服务器重新启动 mysql(以再次快速响应)。

/etc/init.d/mysql stop

不,我尝试关闭 mysql,它说可以。但 10 分钟后,命令似乎冻结了,我没有看到任何反应。我按 ctrl+x 退出,我想再次尝试 mysql stop 命令,失败了!我也无法启动 mysql。

如果您查看命令“top”,它会给我一些严重的mysql CPU 结果。

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                                                       
28429 mysql     20   0  356m 128m 6336 S 88.2  6.4   1095:39 mysqld  

我希望有人能帮助我!

谢谢!

答案1

看起来 DBMS 上可能仍在运行一些错误的查询 - 请注意,设置超时/终止客户端不会停止 DBMS 上启动的任何查询。

用于mysqladmin processlist识别仍在运行的查询并mysqladmin kill $mysqlprocess停止它们。

这种事情在 MyISAM 引擎上比在 Innodb 上更容易发生(在顺序工作负载下速度稍慢,但处理并发请求要好得多)。如果您目前正在大量使用 MyISAM,那么请切换到 Innodb。

除此之外,您仍需要对 DBMS 进行一些调整 - MyISAM 充分利用了 VFS 缓存 - 但对于 Innodb,您需要设置一个大型缓冲池并启用 o_direct。然后,您需要开始检查查询并确定要添加哪些索引/要删除哪些索引以及要重写哪些语句。

(顺便说一句,反弹服务器不会对性能产生影响)

相关内容