2015-02-11 109 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