sql >> Databasteknik >  >> RDS >> Mysql

MySQL Statement Cancellation Timer kunde inte stoppas

(gammal fråga men jag stötte på samma fel/varningsmeddelande)Använder du en jdbc-pool med QueryTimeoutInterceptor eller ring statement.setQueryTimeout(320) fungera. Den anropar en intern mysqljdbc.jar-tråd för att avbryta långa pågående frågor.

Tomcat hotdeployment känner inte igen det så tråden körs kvar och håller en död webbappskontext fortfarande i 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"
  />

Det här varningsmeddelandet The web application [TI] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it händer även om den här lyssnaren är aktiverad i tomcat/conf/server.xml fil. Jag vet inte om en död webbapp släpps efter en tidsgräns för sökfrågan. Jag har bestämt mig för att inte använda en frågetimeout med MySQL jdbc-drivrutinen.

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



  1. Parametrar filnamnet i MYSQL LOAD DATA INFILE

  2. hur man kontrollerar att databasen är konsekvent efter ofullständig återställning

  3. Postgresql aggregerad array

  4. Lista över främmande nycklar och tabellerna de refererar till i Oracle DB