为了账号安全,请及时绑定邮箱和手机立即绑定

程序莫名其妙随机卡住,无异常,十分诡异~

程序莫名其妙随机卡住,无异常,十分诡异~

海绵宝宝撒 2018-11-05 06:07:13
我做了一个蜘蛛程序,用多线程爬网页,使用命令行同步输出日志信息,在主线程中每隔20秒(Sleep)输出一次统计信息。该程序运行几十分钟后就会莫名其妙地随机卡住不动,不光子线程不会继续工作和输出,主线程也不再输出任何信息了,就这么一直卡住不运行了,但窗口并没有失去响应。调试里窗口里没有看到未被捕获的异常,出现过的异常都在可控范围内,不影响流程;任务肯定是没有完全完成,每个线程也都没完成当次分配的任务;就算某一个线程里的网页访问超时也不该影响其他的线程,况且也有超时时限的;线程只有一处用到锁,应该不是死锁问题,我尝试过155个线程同时运转一大段时间也是正常的。我的线程都设为了后台线程,应该和这个无关吧,后台应该也不会被Windows忽略吧。怀疑是命令行输出时卡住,不知有没有这个可能呢?命令行是否有输出行数上限?我正在测试定时清屏是否有效。各位朋友能帮忙想想解决办法么?
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

adplus -hang -pn 蜘蛛测试.exe -quiet -o c:\dumps

5分钟之后,再运行一次

5分钟之后,再运行一次

 

抓到三组,就差不多了。一般而言,CPU和Memory都死水微澜,说明你的程序hang在某个请求上了,如socket的、如sql query execution等,在等待他们的返回。

 

从设计的角度讲,你的程序应该加一个timeout的。


查看完整回答
反对 回复 2018-11-06
?
杨魅力

TA贡献1811条经验 获得超5个赞

无法确定你的问题,这个现成本来就是很麻烦的事情,控制不好就是你的这个样子,

大面上,你的这个用法,和大概的方法没有错。


查看完整回答
反对 回复 2018-11-06
  • 2 回答
  • 0 关注
  • 449 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信