这几天在搞 boss 直聘,全国数据.
写了个多线程爬虫, 晚上挂到服务器上爬虫速度杠杠滴, 第二天来看爬虫速度巨慢无比,
我是开的 300 线程,
查看服务器状态, cpu 内存, 带宽 非常正常,
然后网上查查资料 可能是 TCP 的端口占用 TIME_WAIT 太多, 导致服务器可用端口耗尽,
但是我测试了一下 10 个线程, 发现还是会变慢,
然后考虑到可能是线程假死了,,
代码大概: requests 请求全部加了 timeout ;
需要对数据库操作的方法都写了对 mysql 的连接; 更新,查找操作都加了线程锁;
while true 循环 break 加好了都
那么问题来了,大佬们,我怎么判断出是哪个步骤假死了,
如果判断不出来, 有没有操作 可以重启这个线程..
或者大佬们有没有遇到过这种情况,求指点
1
wlsnx 2018-11-20 17:27:05 +08:00
代码呢?
|
2
yixiugegegege OP |