2012-04-18 41 views
1

我與MySQL,Grails和Java的戰鬥。確定優先事項處理

  1. 我有應用服務器,在那裏運行Grails應用。
  2. 我有一個MySQL數據庫的另一臺服務器。
  3. 我有一個Java應用程序,連接到服務器,以數據爲CSV文件導出。

我在數據庫中有很多數據(10萬個寄存器),每15分鐘Grails應用程序就會連接到數據庫,以檢查並保存新的信息。正常的方式來運作。

我的問題是,雖然Grails的應用程序工作,我想執行一個Java應用程序,出口的DB中的信息的一部分。但是我的問題是這個過程很慢,但是有時候是這樣。我來解釋一下:

  1. 如果Grails的應用程序工作,我的Java應用程序需要大約4天導出所有data.The的Java proccess需要大約0.3-0%的CPU。

  2. 如果關閉了Tomcat,並且因此所有到DB的連接(在mySQL上顯示processlist命令)大約需要40分鐘 才能完成所有過程。 Java進程佔CPU的85%左右。

我不知道是什麼問題,但我什麼都試過了,我的問題是,我不能停止的Grails應用中的所有,我要導出的時間。正因爲如此,有一些方法可以爲流程之間提供優先級,以確保我的Java應用程序具有最高優先級?

在此先感謝您的回答,

+0

所以,當Tomcat和Grails的運行,你基於Java的報告程序需要大約沒有CPU時間4天?當它自己運行時(沒有Tomcat,沒有Grails),它在85%CPU時間運行40分鐘? – 2012-04-18 16:38:32

+0

是的,或多或少都是這樣的。看起來,除了我的Java應用程序之外,如果還有更多的數據庫連接,那麼一切都非常緩慢,並且看起來像是最低的prio。 – 2012-04-18 16:43:01

+0

數據庫是InnoDB。 – 2012-04-18 16:45:57

回答

3

這聽起來像是數據庫鎖定問題。我建議獲得像innotop這樣的工具並仔細查看數據庫中發生的事情。特別是,當您的grails應用程序正在運行時,我會仔細查看活動的開放式表,鎖和查詢。

+0

看起來像這樣,它的真實@ataylor。但我的問題是,正常情況下,Grails應用程序每隔15分鐘就會執行一次定期任務,持續5分鐘。但是另一次,不是什麼都不做,但是緩慢的表現仍然繼續。 – 2012-04-19 08:58:38