sql >> Database >  >> RDS >> Mysql

Annuleringstimer voor MySQL-verklaring kan niet worden gestopt

(oude vraag maar ik kwam dezelfde foutmelding/waarschuwing tegen) Gebruikt u een jdbc-pool met QueryTimeoutInterceptor of bel statement.setQueryTimeout(320) functie. Het roept een interne mysqljdbc.jar-thread aan om langlopende zoekopdrachten te annuleren.

Tomcat hotdeployment herkent het niet, dus de thread blijft achter en houdt een dode webapp-context nog steeds in het RAM.

  <Resource name="jdbc/BSManager" auth="Container" 
    type="javax.sql.DataSource" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
    initialSize="2" maxActive="100" maxIdle="10" maxWait="30000"    
    username="myuser" password="mypwd"
    driverClassName="com.mysql.jdbc.Driver" 
    jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor(queryTimeout=320)"
    url="jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&amp;characterEncoding=utf8"
        validationQuery="SELECT 1" removeAbandoned="true" removeAbandonedTimeout="7200"
        testOnBorrow="true" maxAge="1800000"
  />

Dit waarschuwingsbericht The web application [TI] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it gebeurt zelfs als deze luisteraar is geactiveerd in tomcat/conf/server.xml het dossier. Ik weet niet of dode webapp wordt vrijgegeven na een query-time-out. Ik heb besloten om geen querytime-out te gebruiken met het MySQL jdbc-stuurprogramma.

  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" 
        classesToInitialize="com.mysql.jdbc.NonRegisteringDriver" />



  1. Hoe MID() werkt in MariaDB

  2. DECIMAL invoegen in de MySQL-database

  3. Migratie schrijven om de primaire sleutel van het model te wijzigen met ManyToManyField

  4. Wijzig het wachtwoord voor een SQL Server-aanmelding