xxl-job锁超时

xxl-job-admin启动的时候一直报Lock wait timeout exceeded; try restarting transaction

1
2
3
4
5
6
7
8
9
com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:124)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:912)
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
at com.xxl.job.admin.core.thread.JobScheduleHelper$1.run(JobScheduleHelper.java:74)
at java.lang.Thread.run(Thread.java:748)

估计是我不小心admin实例起了太多的原因,解决办法就是关闭所有admin实例,删除xxl所有表,再重新搞一遍

删除表的过程中发现有个表一直删除不掉,这也是之前报死锁的原因,所以解决掉这个死锁问题,不删除表也可以解决

SHOW FULL PROCESSLIST查看所有链接信息

SELECT * FROM information_schema.PROCESSLIST ORDER BY info DESC;

使用这个可以看到上面的所有字段而且可以排序等操作

上面的操作后观察可以看到state,与info字段显示xxl_job_lock 被锁住了,执行不下去,显示Waiting for table metadata lock.

kill <上面查出来的id>

把这个session终止了再次删除发现还是卡死状态

select * from information_schema.innodb_trx;
查询事务,把看起来不正常或一直卡死的事务也关掉
对应的字段是’trx_mysql_thread_id’

kill xxxx

再删除就可以了.正常删除表了

这也是mysql死锁排查的通用过程了.


xxl-job锁超时
https://lililib.github.io/xxl-job锁超时/
作者
煨酒小童
发布于
2025年6月16日
许可协议