2013-08-02 50 views
1

我正在使用MyBatis持久性框架連接到Teradata。 Tomcat 7是使用的服務器。在執行性能測試時,當通過Mybatis連接觸發插入查詢時,超時。此問題僅在性能測試中出現,問題僅出現在寫入操作上 我得到的異常是 - 由:com.teradata.jdbc.jdbc_4.util.JDBCException:[Teradata JDBC Driver] [TeraJDBC 14.00.00.21] [錯誤802] [SQLState HY000]數據包接收發生超時...Tomcat上的Mybatis上的連接池問題

我在使用資源聲明(並使用JNDI訪問它)在Tomcat中使用連接池。下面列出server.xml條目

<Resource name="jdbc/ TERADATA " auth="Container" 
type="javax.sql.DataSource" 
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"     
driverClassName="com.teradata.jdbc.TeraDriver" 
url="jdbc:teradata:// <host name> /TMODE=TERA,LOB_SUPPORT=ON,DATABASE= <Schema Name>" 
username="<User>" password="<password>" 
maxActive="60" 
maxIdle="10" 
maxWait="200" 
minIdle="2" 
initialSize="2" 
validationQuery="select 1" 
testOnBorrow="TRUE" 
removeAbandoned="TRUE" 
removeAbandonedTimeout="60」 
logAbandoned="FALSE"     jdbcInterceptors="ConnectionState;ResetAbandonedTimer;SlowQueryReportJmx(threshold=30000)" 
logValidationErrors="TRUE" 
defaultAutoCommit="FALSE" 
validationInterval="1000" 
testOnReturn="FALSE」 
minEvictableIdleTimeMillis="900000 
timeBetweenEvictionRunsMillis="1800000" 
autoReconnect="TRUE" 
accessToUnderlyingConnectionAllowed=」TRUE"     
/> 

是否有任何可能,tomcat的連接池與Mybatis之一發生衝突。如果是的話有什麼方法可以覆蓋它。在MyBatis中,啓用了行級loacking。這是否會造成連接問題被耗盡?

回答

1

您是否考慮過使用TD2(默認)身份驗證機制時發生的與Teradata JDBC驅動程序相關的Slow Logon問題?

此問題已歸因於Java虛擬機使用的默認隨機數生成器中的缺陷。該鏈接爲您提供測試腳本以確認問題是否存在以及爲解決缺陷提供文檔化解決方案。

編輯:

這將解決您如何在MyBatis的連接是否相對於池或UNPOOLED處理。它不會解決JNDI配置問題,因爲這必須在JNDI中處理。

<dataSource type="POOLED"> 
    <property name="driver" value="${driver}"/> 
    <property name="url" value="${url}"/> 
    <property name="username" value="${username}"/> 
    <property name="password" value="${password}"/> 
</dataSource> 

<dataSource type="UNPOOLED"> 
    <property name="driver" value="${driver}"/> 
    <property name="url" value="${url}"/> 
    <property name="username" value="${username}"/> 
    <property name="password" value="${password}"/> 
</dataSource> 

這種方法很可能需要將JDBC客戶端安裝在您的MyBatis的服務器上,並與您的實現取決於如何您的基礎設施已設計可能無法正常工作。

+2

由於Mybatis中存在默認連接池機制,因此似乎創建了該問題。由於我們在JNDI中使用連接池,因此它與Mybatis池衝突。有什麼辦法可以禁用Mybatis的連接池 –