1

我正在与 MySQL、Grails 和 Java 作斗争。

  1. 我有应用程序服务器,在那里运行 Grails 应用程序。
  2. 我有另一台带有 mysql db 的服务器。
  3. 我有一个 Java 应用程序,它连接到服务器以导出 csv 文件中的数据。

我在数据库中有很多数据(1000 万个寄存器),每 15 分钟 Grails 应用程序就会连接到数据库,以检查和保存新信息。正常运作方式。

我的问题是,当 grails 应用程序正在运行时,我想执行一个 java 应用程序,该应用程序将部分信息导出到数据库中。但我的问题是这个过程真的很慢,但只是有时。我会解释:

  1. 如果 Grails 应用程序正常工作,我的 Java 应用程序需要大约 4 天来导出所有数据。Java 进程占用大约 0.3-0% 的 CPU。

  2. 如果我关闭了 Tomcat,那么所有到数据库的连接(mySQL 上的 show processlist 命令)大约需要 40 分钟才能完成所有过程。Java 进程占用大约 85% 的 CPU。

我不确定是什么问题,但我尝试了一切,我的问题是我无法在我想要导出的所有时间停止 grails 应用程序。正因为如此,有一些方法可以给进程之间的优先级以确保我的 Java 应用程序将具有最高优先级?

提前感谢您的回答,

4

1 回答 1

3

这听起来像是数据库锁定问题。我建议使用像innotop这样的工具,并仔细查看数据库中发生的情况。特别是,我会仔细查看打开的表、锁和在 grails 应用程序运行时处于活动状态的查询。

于 2012-04-18T21:23:33.893 回答