Wie java lösen.sql.SQLNonTransientConnectionException: Konnte nicht Lesen resultset: Connection reset?
Bin ich immer eine Ausnahme beim aufrufen von Datenbank-code nach einem bestimmten Zeitraum der Inaktivität
java.sql.SQLNonTransientConnectionException: Could not read resultset: Connection reset
at org.mariadb.jdbc.internal.SQLExceptionMapper.get(SQLExceptionMapper.java:136)
at org.mariadb.jdbc.internal.SQLExceptionMapper.throwException(SQLExceptionMapper.java:106)
at org.mariadb.jdbc.MySQLStatement.executeQueryEpilog(MySQLStatement.java:264)
at org.mariadb.jdbc.MySQLStatement.execute(MySQLStatement.java:288)
at org.mariadb.jdbc.MySQLStatement.executeQuery(MySQLStatement.java:302)
at org.mariadb.jdbc.MySQLStatement.executeQuery(MySQLStatement.java:361)
at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
at com.vimba.database.DBFactory.attemptLoginWithTempPasswordDetails(DBFactory.java:181)
at com.vimba.database.DBFactory.authenticate(DBFactory.java:131)
at com.vimba.service.ExposedFunctions.login(ExposedFunctions.java:88)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:210)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:132)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:241)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:74)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:559)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:518)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:503)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:400)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:226)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:375)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:175)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:134)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:159)
at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.mariadb.jdbc.internal.common.QueryException: Could not read resultset: Connection reset
at org.mariadb.jdbc.internal.mysql.MySQLProtocol.getResult(MySQLProtocol.java:926)
at org.mariadb.jdbc.internal.mysql.MySQLProtocol.executeQuery(MySQLProtocol.java:991)
at org.mariadb.jdbc.MySQLStatement.execute(MySQLStatement.java:281)
... 40 more
Caused by: java.net.SocketException: Connection reset
Ich habe versucht, ändern Sie die /etc/my.cnf hinzufügen wait_timeout einer Woche, aber es ist nicht einen Unterschied gemacht;
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld/mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# Currently, there are mariadb and community-mysql packages in Fedora.
# This particular config file is included in respective RPMs of both of them,
# so the following settings are general and will be also used by both of them.
# Otherwise the RPMs would be in conflict.
# Settings for particular implementations like MariaDB are then
# defined in appropriate sections; for MariaDB server in [mariadb] section in
# /etc/my.cnf.d/server.cnf (part of mariadb-server).
# It doesn't matter that we set these settings only for [mysqld] here,
# because they will be read and used in mysqld_safe as well.
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysqld_safe]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
#one week timeout to see if exception goes
wait_timeout=604800
event_scheduler=on
/etc/my.cnf (END)
Weiß jemand, wie man dieses Problem lösen?
- Die Ausnahme ist zu sagen, dass Ihre Verbindung wird geschlossen, wenn Sie versuchen zu Lesen, Ihre Ergebnismenge, arbeiten Sie mit threads ? ps : der ping ist nicht zu helfen, denn Sie öffnen in einem anderen Zusammenhang ...
- tut conn = Quelle.getConnection(); nicht bekommen, mir eine neue Verbindung?
- kannst du den code, der den Aufruf an die db? und welche operation Sie tun ? einfügen/aktualisieren? Vielleicht ist locking Probleme ?
- Es ist in der Tat, aber die Verbindung, die Sie für Ihre Aussage ist anders ! So halten lebendig eine andere Verbindung ist nicht sinnvoll ... Was ist Ihre wait_timeout-Wert in mariadb ? Ist Ihre Abfrage, Verarbeitung lange ? Vielleicht auf einen Netzwerk-Fehler beim schließen der Verbindung ...
- fügen Sie einige Beispiele, wo es scheitert nun die Frage
- Wenn Sie schlucken Ausnahmen, wie du ja weißt, dass dein ping ist zu arbeiten?
- ich löschte mein log zu speichern Raum
- Wenn Sie ein PreparedStatement-Sie brauchen nicht zu pass-argument, wenn Sie ausführen, ... ist Nicht das problem, aber noch auf der Suche 🙂
- Ich vermute Sie konnte nicht eine Lösung finden?
- versuchen Sie auch den interactive_timeout Wert, je nachdem, welchen client Sie verwenden. wait_timeout wird nur berücksichtigt, auf tcp basierende verbindungen - nicht, wenn Sie über z.B. sockets oder named pipes-wie erwähnt-in Ihrem conf finden Sie unter mysql
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie konfigurieren, DBCP zu tun, dass die Verbindung für Sie prüfen. Füge Folgendes in deine config
DBCP wird überprüfen, ob die Verbindung am Leben jedes mal, wenn Sie eine Verbindung aus dem pool, fallenlassen Toten verbindungen und neue zu erstellen, wenn Sie benötigt
am Ende gab ich auf und schrieb gerade eine Methode, um die ping-Datenbank jede Stunde