sql >> Databáze >  >> RDS >> Mysql

Časovač zrušení příkazu MySQL se nepodařilo zastavit

(stará otázka, ale narazil jsem na stejnou chybovou/varovnou zprávu)Používáte fond jdbc s QueryTimeoutInterceptor nebo zavolejte statement.setQueryTimeout(320) funkce. Vyvolá interní vlákno mysqljdbc.jar ke zrušení dlouho běžících dotazů.

Hotdeployment Tomcat to nerozpozná, takže vlákno zůstane spuštěné a v paměti RAM stále zůstává mrtvý kontext webové aplikace.

  <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"
  />

Tato varovná zpráva The web application [TI] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it stane se, i když je tento posluchač aktivován v tomcat/conf/server.xml soubor. Nevím, jestli se mrtvá webová aplikace uvolní po vypršení časového limitu dotazu. Rozhodl jsem se nepoužívat časový limit dotazu s ovladačem MySQL jdbc.

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



  1. Jak resetovat/změnit heslo roota MySql příkazového řádku v ubuntu linux

  2. Zrušit čekající požadavky AJAX v aplikaci PHP?

  3. Jak nastavit časové pásmo databáze pro instanci AWS RDS

  4. SELECT $ (znak dolaru)