【问题标题】:Close mysql connection through shell script通过shell脚本关闭mysql连接
【发布时间】:2019-12-18 05:25:57
【问题描述】:

我正在运行具有多个 mysql -u -e "select * from tbl" 语句的 shell 脚本。我是否需要通过我的 shell 脚本显式关闭 mysql 连接?如果是的话,你能指导我怎么做吗?

我在 mysql 中看到许多睡眠连接。即使我杀死了它们,它们也会在短时间内再次创建,我怀疑是 shell 脚本执行导致了这种情况。

谢谢

【问题讨论】:

  • 根据 mysql --help,-e 标志执行查询并退出。 “-e, --execute=name 执行命令并退出。(禁用 --force 和历史文件。)”。我不认为这是因为 shell 脚本。根据您的 mysql 配置,您可能会在 mysql 上看到睡眠连接,并具有最小打开的连接池大小。
  • 感谢您的更新。我也会尝试从这方面调试它
  • 退出进程会在 TCP 级别释放其所有 TCP 连接。您看到的“睡眠”连接是不相关的。

标签: mysql linux shell


【解决方案1】:

如果你没有解决睡眠查询的根本原因,它会在每次终止连接后重新启动并消耗资源,所以你必须检查你的代码并修改它以在执行后关闭连接查询。

无论如何,您都可以通过它的 ID 终止任何连接,该 ID 可以通过以下方式确定:

mysql -e 'show processlist;'

ID 将在第一列,然后您可以通过以下方式杀死它们:

mysql -e 'kill $ID'

并一次杀死他们:

for i in $(mysql -e "show processlist" | awk '/Sleep/ {print $1}'); do mysql -e "KILL $i;"; done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多