是否可以从 tomcat 管理 mysql 个线程(卡住的查询)?

Is it possible to manage mysql threads(stuck queries) from tomcat?

对于某些上下文,我们在 tomcat 上有一个非常大的应用程序 运行,我们有很多方法来构建自定义过滤器,其中一些可能太慢了。

问题是,有什么方法可以直接 control/kill 一个 mysql 线程或通过 tomcat(也许是线程池)?如果有办法从 tomcat 管理它,如果我终止线程,它也会终止 mysql 线程? (没有找到任何与文档相关的内容)。

我正在尝试构建一个层以防止查询停留在数据库上。例如,如果查询停留 运行 超过 1 分钟,我的应用程序可以终止它(而不是我去终端并终止 'by hand')。

提前致谢。

您很可能想使用连接池。如果这是由 Tomcat 管理的,则您的入口点是数据源。请参阅 https://tomcat.apache.org/tomcat-9.0-doc/jndi-datasource-examples-howto.html 如何配置。有了这个,您可以控制应用程序在数据库上可以拥有的并行连接数量。

除此之外,您还需要配置超时,这样杂散线程就不会永远阻塞数据库。参见

  • How to set a connection timeout on the MySQL JDBC driver?
  • Can I set a JDBC timeout for a single query?