简述:
星期一,新的的一周开始,天气晴朗,风和日丽。本是一个非常不错的心情,突然微信头像闪烁,果不其然又爬虫出问题了,可谓是一入爬虫深似海,项目稳定才见鬼。这不,某个神经大条又搭错了,代理ip调度还在轮循这,而代理池不干活了,我就日……,不说脏话。
首先排除了reids的死翘翘的可能性,就看代理ip模块的调度日志是否能够提供有用的信息,还好哥哥我习惯打印一堆弱智的日志,让脑残儿童都能看明白的提示。万能的重启解决生产问题后,我很快就定位到了问题,一个诡异的现象,调度器还任劳任怨的工作着,可是里面的异步处理则罢工了。我们本能地就能猜测到,线程死锁了。
程序员的第六感很准,就是死锁。如果你有编程的思想,那么接下来你本能的反应就可能和我一样,去找李彦宏呀。
正题:
线程死锁分为两类:顺序死锁和资源死锁,那么坑中的你属于哪一种呢,那就对号入座吧。记住,你踩进的坑,别人都帮你踩平了,看看别人是怎么找到问题并解决问题的。
百度一搜,就搜出来http://blog.csdn.net/w1014074794/article/details/51114816 博客,小伙子总结的不错,懒惰的你可以直接搬走了,当然人家已经把问题搞得一清二楚了,你就没必要再浪费自己美丽的青春了。
解决办法:http://blog.csdn.net/sk199048/article/details/50589980 这里讲了一句本不错的话“死锁的必要条件必须全部满足才会产生死锁,所以要解决死锁问题只需要任意破坏其中一个条件就可以解决死锁问题。”,如果没有猜错,他一定是一个善于总结并能发现问题关键的人,是我迫切学习的Object。