2015-02-11 108 views
1

我相信我不是第一個遇到這個問題的人,所以我在這裏。 問題在於我們在網站上顯示的Birt(報告工具)報告。JDBC Interactive Connection

以下是我們在細節研究了兩種MySQL配置變量:

wait_timeout

interactive_timeout

,基本建立wait_timeoutinteractive_timeout爲默認值八小時會導致我們的數據庫服務器用完在生產環境中可用的連接或速度問題。我們的應用程序運行在非交互式客戶端(Apache/PHP)上。

The interactive timeout does not affect any web application connections. A high interactive_timeout but a low wait_timeout is normal and is the best practice.

基於我們試圖MySQL的服務器上設置WAIT_TIMEOUT = 60和interactive_timeout = 3600,並且還增加了額外的參數來執行經由發佈時伯特報告下面的連接的URL INTERACTIVE_CLIENT連接上述觀察。 BIRT使用mysql-java-connector與連接mysql:

jdbc:mysql://10.178.192.135:3306/ChapmanB_vkjUZSr?interactiveClient=true&useCompression=true&autoReconnect=true&initialTimeout=3600&maxReconnects=10 

但我們還是在連接中止錯誤在MySQL日誌。它看起來像interactiveClient=true參數不起作用,仍然創建非交互式連接。當我們增加wait_timeout的值時,我們不會在較長時間內出錯。根據wait_timeout = 60當Birt嘗試重新使用該連接時,MySQL會自動關閉指定時間內的空閒連接,但自連接失敗後,報告不能在第一次嘗試時使用。在頁面刷新時,它會創建新的連接和報告工程。

在這個時刻我們很無奈,因爲我們不太瞭解Java和JDBC連接器,但是我們遇到過以上Birt嘗試使用閉合連接的錯誤。

+0

在哪個應用程序服務器上運行您的birt查看器?既然您提到Apache,我認爲它是Tomcat,但是您能否確認 – Dominique 2015-02-11 08:22:50

+0

我們正在運行|使用|在我們的應用程序中顯示Birt報告,該應用程序在Apache [LAMP]服務器上運行。 – 2015-02-11 10:20:13

+1

您是否考慮在報告中使用連接池?它只需要對BIRT rpt設計進行一些小改動,它可能會一勞永逸地解決這些連接問題。與Tomcat,Jboss和Glassfish建立連接池很容易,我認爲它與燈非常相似。 – Dominique 2015-02-11 11:44:54

回答

1

它應該幫助別人。我也很感謝@ Dominique對連接池的建議。

我們觀察到,在使用mysql-java-connector時,Birt管理控制檯中的本地連接池設置無效。只有BirtActuate自己知道這是爲什麼。

這一切都在一起了一段時間來解決這個問題了,我們試圖通過給here

還有一點值得一讀解池在Tomcat的配置文件中創建JNDI數據源和連接解決問題是關於mysqli_real_connect()功能和標誌MYSQLI_CLIENT_INTERACTIVE其中

Allow interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection