1.生产环境中用到的是mariadb10.0.28,其中的xtradb有针对异常transcation kill的参数。通过设置SET GLOBAL innodb_kill_idle_transaction=60; 可以将空闲超过60秒的异常事务杀死来防止后续的锁争用和数据库挂起的问题。2.同开发人员沟通,发现代码中存有bug。在进行异常处理的时候没有针对所有的exception进行rollback操作,而只是针对一种异常抛出错误并进行rollback。因此程序在其他异常的时候没有及时告诉数据库进行rollback或者commit结束该事务,而是程序直接异常退出造成数据库链接处于running状态。该状态会一直持有请求的锁、内存等资源,在并发量大的情况非常容易造成数据库的挂起假死状态。改代码!3.在zabbix中监控locking信息,超过10000ms及时报警。