我相信我不是第一個遇到這個問題的人,所以我在這裏。 問題在於我們在網站上顯示的Birt(報告工具)報告。JDBC Interactive Connection
以下是我們在細節研究了兩種MySQL配置變量:
,基本建立wait_timeout
和interactive_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嘗試使用閉合連接的錯誤。
在哪個應用程序服務器上運行您的birt查看器?既然您提到Apache,我認爲它是Tomcat,但是您能否確認 – Dominique 2015-02-11 08:22:50
我們正在運行|使用|在我們的應用程序中顯示Birt報告,該應用程序在Apache [LAMP]服務器上運行。 – 2015-02-11 10:20:13
您是否考慮在報告中使用連接池?它只需要對BIRT rpt設計進行一些小改動,它可能會一勞永逸地解決這些連接問題。與Tomcat,Jboss和Glassfish建立連接池很容易,我認爲它與燈非常相似。 – Dominique 2015-02-11 11:44:54