爬虫把自己爬死了。。。。点解?

2017-03-06 12:09:26 +08:00
 4ever911
我弄了一个爬虫程序, 没有把服务器爬死,倒是把自己网络经常弄挂,

大概就是用 gevent 创建一个 Pool(50) , 50 个并发,

用 Requests 来迭代 (有打 monkey patch )

url 大概是接近 10000 个,

速度其实还挺快的, 一秒能处理接近 300 个 requests , for 迭代,没有 sleep

但是现在的问题是,每次连续处理 3000 个左右还好,再多了,经常就把本地网络弄挂了,导致程序也 timeout 退出。
一两分钟内,经常网络也连不上。不知道是不是我程序写的太耗系统资源,可能要稍微在一段任务后休息一下。

现在的解决办法就是, 把任务分成小块,每块大概 2000 个, 每爬了 2000 个就休息几秒。

有没有更科学的方法,或者是我哪里使用不当?
6803 次点击
所在节点    Python
23 条回复
markmx
2017-03-06 12:15:30 +08:00
换个好路由器.
IanPeverell
2017-03-06 12:22:54 +08:00
感觉是:请求太多了,一次发不出那么多请求,全排路由缓存里了,然后把缓存挤爆了后面的都排不进去了就超时了,然后处理这些请求花了一两分钟,换个加宽带宽,然后异步请求更好一点
onetrlee
2017-03-06 12:24:49 +08:00
1L+1
如果有在用路由,先尝试不用路由,再跑一下.如果有用光猫把光猫改成桥接,直连电脑然后电脑拨号跑一下试试.

我前段时间也是写爬虫,就是这个问题,最开始,1 秒撑死直接处理不到 1000 个请求,上行带宽只用了不到 10M.后来去掉路由有提升但是还是没跑满,又把光猫改成桥接电脑直接拨号,问题就解决了.

所以,如果你确定代码没问题的话,检查一下自己网络会经过的设备,挨个排查吧.
imn1
2017-03-06 12:26:49 +08:00
可以确认 LZ 不玩 P2P ,是个好孩子
4ever911
2017-03-06 12:35:12 +08:00
我也怀疑是路由器,这个是华为的 3000 多的路由器,按说不至于这么脆弱啊。

我确实在阿里云上测试过,毫无压力。
4ever911
2017-03-06 12:36:33 +08:00
说错了, netgear 的路由器
relaxchen
2017-03-06 13:05:23 +08:00
@4ever911 NetGear 3000+的路由器,,那只可能是 R9000 了?
4ever911
2017-03-06 14:36:20 +08:00
@relaxchen R8500

现在在外面一个小茶楼, 居然这边的网络也毫无压力。。。。
看来是我家里有设备有问题,我中间搭配了几个光猫,还有个苹果的 Airport Extreme
8355
2017-03-06 14:47:53 +08:00
肯定是路由器设置问题. 找找一般抗攻击之类的设置.
ericbize
2017-03-06 15:00:45 +08:00
不要开 Qos , 网件的 Qos 好奇怪,连测速的都给搞一下。
4ever911
2017-03-06 15:08:09 +08:00
@ericbize 我没有开 Qos
sola97
2017-03-06 15:12:18 +08:00
记得以前用 zmap ,速度过快就全堆内存里了, 24G 内存堆满就报错,网卡还要处理十分钟
yxqcyl
2017-03-06 16:10:56 +08:00
楼主广东人?
relaxchen
2017-03-06 17:20:56 +08:00
@4ever911 把家里的网络拓扑图贴出来让大家看看呗?
webcoder
2017-03-06 17:34:58 +08:00
端口刷太多,然后不释放,锁死了??
Sh888
2017-03-06 17:39:25 +08:00
家用宽带应该有最大连接数限制吧。
dsg001
2017-03-06 20:06:09 +08:00
本机 gevent+requests 跑百万 url 没问题,路由器应该事设置有问题吧
bertie55
2017-03-06 20:10:32 +08:00
求个 python 爬虫工程师,两年爬虫经验。
暴风体育 jiangli@baofeng.com

跪求人才,欢迎咨询。
qydyhyn
2017-03-06 20:23:25 +08:00
用软路由试试吧!
nicevar
2017-03-06 20:38:17 +08:00
量太大了,家用路由器扛不住的,我的 R8000 和 6300 被我跑崩好多次

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/345260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX