2017-05-10 15 views
0

修改:我使用Jboss 7服务器和Oracle 10g作为我的web应用程序,但是当我启动服务器应用程序正常工作但2或3小时后正在变得缓慢。销毁无法成功匹配的连接:在与数据库连接时发生jboss错误

我猜对了。 1.数据库和jboss服务器之间没有正确的连接,所以没有获取数据,所以导致它变慢。在JBoss服务器我独立,full.xml文件

数据源信息如下:

<datasources> 
       <datasource jndi-name="java:/TTKConnectionDataSource" pool-name="TTKConnectionDataSourcePool" enabled="true" use-java-context="true" use-ccm="false"> 
        <connection-url>jdbc:oracle:thin:@10.1.0.112:1521:vidaltest</connection-url> 
        <driver-class>oracle.jdbc.OracleDriver</driver-class> 
        <driver>oracle</driver> 
        <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
        <pool> 
         <min-pool-size>5</min-pool-size> 
         <max-pool-size>150</max-pool-size> 
         <prefill>true</prefill> 
         <use-strict-min>true</use-strict-min> 
         <flush-strategy>FailingConnectionOnly</flush-strategy> 
        </pool> 
        <security> 
         <user-name>appln</user-name> 
         <password>appln</password> 
        </security> 
        <validation> 
         <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/> 
         <validate-on-match>true</validate-on-match> 
         <background-validation-millis>300000</background-validation-millis> 
         <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/> 
         <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/> 
        </validation> 
        <timeout> 
         <idle-timeout-minutes>10</idle-timeout-minutes> 
        </timeout> 
       </datasource> 

和错误时减慢服务器的什么我得到:

11:31:04,689 WARN [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (http-web-10) IJ000612: Destroying connection that could not be successfully matched: org[email protected]323ff8fa[state=DESTROYED managed conn[email protected]62b2c9f connection handles=0 lastUse=1494391408674 trackByTx=false [email protected]547ac048 pool internal [email protected][pool=TTKConnectionDataSourcePool] [email protected][connectionListener=323ff8fa connectionManager=488aa6d1 warned=false currentXid=null] txSync=null] 
11:37:09,075 INFO [com.ttk.action.claims.TTKListener] (http-web-20) Session is created sessionCreated 
11:37:09,078 ERROR [org.apache.struts.actions.DispatchAction] (http-web-20) Request[/LoginAction] does not contain handler parameter named 'mode'. This may be caused by whitespace in the label text. 
11:46:35,964 WARN [org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory] (http-web-10) Destroying connection that is not valid, due to the following exception: [email protected]: java.sql.SQLException: pingDatabase failed status=-1 
    at org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker.isValidConnection(OracleValidConnectionChecker.java:74) [ironjacamar-jdbc-1.0.12.Final.jar:1.0.12.Final] 

05: Connection error occured: org[email protected]38b370[state=NORMAL managed conn[email protected]a8c7e2d connection handles=0 lastUse=1494390662156 trackByTx=false [email protected]547ac048 pool internal [email protected][pool=TTKConnectionDataSourcePool] [email protected][connectionListener=38b370 connectionManager=488aa6d1 warned=false currentXid=null] txSync=null]: java.sql.SQLException: pingDatabase failed status=-1 

,当我重新启动服务器而不是连接在服务器再次变慢后最多2或3小时,请告诉我在这个问题上有哪些可能性需要解决。

在此先感谢。

对不起,我再次遇到这个问题,究竟发生了什么?当我的服务器变慢时,它不允许我登录其继续缓冲,因为它没有连接到我的数据库,因为我认为或可能是它没有获得连接对象。并在经过一段时间的缓冲后发出警告信息,我上面提到的“破坏无法成功匹配的连接”。比之后,如果我会尝试登录应用程序比花费时间获取登录或最后一个选项我需要重新启动我的服务器,这是不是最好的有史以来。

回答

1

当JBoss外部关闭连接时,WARN消息并不常见。

该警告表明JBoss获得了Oracle JDBC驱动程序来ping数据库以确保连接仍然有效,并且它报告没有,所以JBoss破坏了连接。然后,JBoss将创建一个新的应用程序,因此理论上应该不会导致任何实际问题。

方法“org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker.isValidConnection()”引发此异常。方法isValidConnection()在内部调用OracleConnection的pingDatabase()[1]方法。它关闭数据库它返回-1,参考[2]。这个问题是Oracle驱动程序的一个已知问题,当它与网络或数据库有问题时可以看到,但与JBoss无关。

这是一种已知类型的错误,指示您的Oracle数据库或偶尔与网络有关的问题。

我会问你检查JBoss节点和数据库之间的网络连接是否稳定。

[1] https://docs.oracle.com/cd/E18283_01/appdev.112/e13995/oracle/jdbc/OracleConnection.html#pingDatabase__

[2] https://docs.oracle.com/cd/E18283_01/appdev.112/e13995/oracle/jdbc/OracleConnection.html#DATABASE_CLOSED

+0

阿努普可以请你建议我如何检查网络连接是否稳定JBoss的节点和数据库之间。 – rishabhkeshari123

+1

- 用通常的方式测试网络,如ping,telnet,ssh ...连接测试。 - 检查您的DNS名称解析是否正常工作;如有疑问,请使用IP地址而不是主机名。 - 使用Oracle tnsping实用程序或SQL * plus测试与Oracle数据库的连接是否正常。 注意:需要安装本地Oracle客户端。 –

+0

检查了一切正常,但今天当我在早上再次尝试同样的问题,我面临,我的web应用程序不允许登录自己 – rishabhkeshari123