2017-05-29 38 views
1

我對着跌破發行Postgres的同時使用連接池在JBoss中

ERROR: canceling statement due to user request 

不一致我啓用了XA數據源查詢超時我在XXX-ds.xml文件後,查詢超時問題。我在我的ds xml文件中添加了以下內容。

<query-timeout>180</query-timeout> 
  • 查詢超時設置180秒,這意味着任何SQL查詢 這需要超過180秒將得到從應用服務器 側取消。

    但是我面臨的問題是不一致的,現在查詢時間超過了180秒。 我們也在使用連接池。

在尋找計算器發現this問題,其中討論了關於可能的原因針對此問題,同時使用連接池。

解決方案建議在postgresql.conf文件中設置statement_timeout設置。但是,由於數據庫服務器由多個應用程序共享,所以在我的數據庫環境中啓用statement_timeout設置有點困難。 我想有一個解決方案,可以在使用連接池的同時有效且一致地終止客戶端的超時查詢。我使用

  • 的JBoss 4.2.2-GA
  • 的PostgreSQL 9.2(64位)
  • 的Java 1.7
  • PostgreSQL相關9.2-1002.jdbc4.jar
+0

在你的問題中缺少一些東西。請添加詳細信息(您在下面寫下「問題」,但沒有提到問題) – hering

+0

錯誤:由於用戶請求取消語句預期會在語句執行超過查詢超時時收到。但我也面臨類似的問題。例如:我必須處理80000行並更新。客戶端獲取所有行並在每個行的服務器上調用process()EJB方法。即對於每個行處理,每個行都有單獨的xa事務。因此,所有將工作,直到超時和超時後處理行得到此錯誤。預計會出現單一聲明,但所有類似聲明都是這樣。我的數據源配置也啓用了池化。 –

回答

0

它看起來像問題在於postgresql驅動程序9.2。當我升級到9.3時,問題已修復。

+1

是的。當我將postgres jdbc驅動程序升級到postgresql-9.3-1102.jdbc41.jar時,問題得到解決 – syed