2010-06-17 75 views
2

我正在開發一次可以接收100條消息的JMS應用程序(獨立多線程Java應用程序),它們需要處理並且數據庫過程需要被要求插入/更新數據。程序非常繁重,因爲驗證也在其中執行。每個程序都需要大約30到50秒的時間來執行,並且它們可以同時運行。 我擔心的是對所有100條消息執行100個程序,並且在jms應用程序的時間限制內發送90秒。 沒有要使用的應用服務器(需求)和數據庫是Teradata(RDBMS)與數據庫的連接限制和應用程序中的Java線程數

我正在使用連接池和線程池在Java代碼和測試代碼與90連接。 問題是:

(1)一次應該限制與數據庫的連接數量? (2)一次推薦多少個線程?

感謝, 喬蒂

回答

1

90似乎想了很多。我的建議是以此爲基準。你的標準是獨一無二的,你需要確保你獲得最大的吞吐量。 我將使代碼可配置爲您使用多少個併發連接,並使用10 ... 100個連接一次運行10個連接來運行它。這不應該花很長時間。當你開始放慢速度時,你知道你已經超出了同時運行的好處。
多次確保您的結果可預測。

0

另一個值得關注的問題是您的「程序需要大約30到50秒才能運行」。這段時間有多少時間是通過Java處理的,以及等待數據庫處理SQL語句需要多少時間?是否應該添加兩次以確定您需要的最大連接數?

一般來說,如果可能的話,在處理完你的java邏輯之後,你應該得到一個連接,使用它並儘可能快地關閉它。如果可能的話,你應該避免獲得連接,做一堆java端處理,調用數據庫,做更多的java處理,然後關閉連接。可能沒有必要持續打開連接。在做這種方法時要謹記的一點是,您需要在單個事務中保留哪些處理(包括數據庫訪問)。

例如,如果運行50秒鐘,只需要1秒的數據庫訪問,那麼您可能不需要如此高的最大連接數。

相關問題