我相信我不是第一个遇到这个问题的人,所以我在这里。 问题在于我们在网站上显示的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