2017-05-29 2 views
1

Ich bin vor der untene AusgabePostgres Abfrage Timeout Problem beim Connection-Pooling in JBoss mit

ERROR: canceling statement due to user request 

inkonsistent, nachdem ich Abfrage-Timeout für xa Datenquelle in meinem xxx-ds.xml aktiviert. Ich habe folgendes in meiner ds xml-Datei hinzugefügt.

<query-timeout>180</query-timeout> 
  • Die Abfrage Timeout wird 180 Sekunden eingestellt, was bedeutet, dass jede SQL-Abfrage, die von der Anwendung Serverseite abgebrochen werden mehr als 180 Sekunden dauert, erhalten.

    Aber das Problem, mit dem ich konfrontiert bin, ist inkonsistent und die Abfragen werden hin und wieder ausgezählt, ohne genau 180 Sekunden zu nehmen. Wir verwenden auch Verbindungspooling.

Während der Suche gefunden this Stackoverflow Frage, die für dieses Problem über die möglichen Ursachen diskutiert, während Connection Pooling verwenden.

Die vorgeschlagene Lösung bestand darin, die Einstellung von statement_timeout in der postgresql.conf-Datei zu setzen. Aber es ist etwas schwierig für mich, die Einstellung von statement_timeout in meiner Datenbankumgebung zu aktivieren, da der DB-Server von mehreren Anwendungen gemeinsam genutzt wird. Ich hätte gerne eine Lösung, um zeitgesteuerte Abfragen von Client-Seite effektiv und konsistent zu beenden, während Verbindungs-Pooling verwendet. Ich bin mit

  • JBoss 4.2.2-GA
  • postgresql 9.2 (64-Bit)
  • Java 1.7
  • postgresql-9.2-1002.jdbc4.jar
+0

In Ihrer Frage fehlt etwas. Bitte fügen Sie die Details hinzu (Sie haben "Problem unten" geschrieben, aber es wird kein Problem erwähnt) – hering

+0

FEHLER: Das Abbrechen der Anweisung aufgrund einer Benutzeranforderung wird erwartet, wenn eine Anweisung mehr als query-timeout ausführt. Aber ich habe auch ähnliches Problem gestellt. zB: Ich muss 80000 Zeilen verarbeiten und updaten. Der Client ruft alle Zeilen ab und ruft die process() EJB-Methode auf dem Server für jede Zeile auf. dh für jede Zeilenverarbeitung gibt es eine separate xa-Transaktion für jede Zeile. Also wird alles bis zum Timeout funktionieren und die nach Timeout verarbeitete Zeile bekommt diesen Fehler. Es wird für einzelne Aussage erwartet, aber es stellte sich für alle ähnlichen Aussagen heraus. In meiner Datenquellenkonfiguration ist Pooling ebenfalls aktiviert. –

Antwort

0

Es sieht aus wie Das Problem ist mit Postgresql-Treiber 9.2. Bei einem Upgrade auf Version 9.3 wurde das Problem behoben.

+1

Ja. Das Problem wurde behoben, als ich meinen postgres jdbc-Treiber auf postgresql-9.3-1102.jdbc41.jar aktualisierte – syed