本文共 406 字,大约阅读时间需要 1 分钟。
模拟项目源码
为了模拟真实场景中的方法调用(消息接收调用执行),使用了线程来模拟。并且使用线程睡眠来保证每个事务执行够长,来让每次模拟执行都必现异常。
项目结构比较简单, Controller > Manager > Service > Mapper > DB,执行 curl 'localhost:8080/test/consumer'
后,查看命令行输出即可看到业务异常日志。
对应的死锁日志需要到对应的数据库执行 show engine innodb status
后可看到。
中间查阅了很多资料,发现有个项目总结了所有的死锁日志对应的可能 SQL:https://github.com/aneasystone/mysql-deadlocks,里面也讲解了加锁的各个细节过程,是非常值得一看的。
当遇到复杂的业务场景,尤其是不熟悉的时候,这个是一个很好的参考资料。
业务日志记录、全链路跟踪是非常非常重要的
转载地址:http://uqyhz.baihongyu.com/