关于爬虫并发量的疑问

2020-07-13 20:33:48 +08:00
 winnerczwx
我在使用 scrapy 框架的过程中发现并发量上不去, 大概每秒 50 左右...想了解一下爬虫并发量除了跟网络, 源站点, 业务逻辑以外, 还有哪些因素会影响并发量呢?

1. 框架的并发设置是 500( 实际只有 50 )
2. 源网站性能应该是没问题的
3. 带宽 100M(实际并跑不满, 每秒大概只有 1M 左右)
4. 业务没有复杂逻辑, 页面下载完后就两个 xpath, 2 个正则, 然后就入库了
5. 硬盘是阿里云的云盘, 大概是 1240 IOPS 左右
6. 服务器 cpu 是 2 核的 (不知道是不是因为配置太低成为了瓶颈)

求大佬们解惑
3060 次点击
所在节点    Python
22 条回复
opengps
2020-07-13 20:41:54 +08:00
你怎么确定源站服务器性能没问题?你这么疯狂爬取,最大的问题就是源站压力,每秒 50,一个页面怎么说也得有几次的硬盘读取,普通硬盘的话 io 可能已经到了极限了
winnerczwx
2020-07-13 21:09:12 +08:00
@opengps 因为我也想知道是不是源站服务器有压力...所以在爬取过程中也访问了源站的页面, 依旧是瞬间打开.... 一个页面没多少东西,去掉页头页尾和一些广告,正文部分只有几百字
guochao
2020-07-13 21:16:19 +08:00
祭出祖传 brendan gregg 的图
http://www.brendangregg.com/Perf/linux_observability_tools.png

这玩意儿建议你在本地做个 benchmark 。如果本地做不了,就监测服务器的指标,主要是 CPU 使用率、CPU 负载、内存、SWAP 、磁盘 bandwidth 、磁盘 iops 、磁盘 latency 、带宽占用、网络延迟这些。要不然谁都不知道你这是什么问题

监控是比较模糊的。有条件的话还做全栈追踪,比如说试试看 zipkin 这类东西,看看具体什么东西在哪里花了多久。
heiheidewo
2020-07-13 21:22:58 +08:00
真特么服了楼主这种,我以前碰到一个人爬我的数据,nginx 设置了单个 ip 每秒请求 100 次,活生生被这个人打满了,最后我也没屏蔽他的 IP 。
恶意爬虫就应该被抓起来批斗
winnerczwx
2020-07-13 21:33:15 +08:00
@guochao 感谢!
winnerczwx
2020-07-13 21:33:55 +08:00
@heiheidewo 请问怎样的爬虫属于善意, 怎样的又属于恶意?
heiheidewo
2020-07-13 21:38:39 +08:00
@winnerczwx 只要影响了别人网站的业务就是恶意爬虫,要是不影响那就无所谓吧
just1
2020-07-13 21:42:37 +08:00
top 看一下系统资源占用吧
jugelizi
2020-07-13 21:44:31 +08:00
控制频率是每个爬虫工程师值得做的事情
winnerczwx
2020-07-13 21:46:28 +08:00
@heiheidewo 我在评论里回复了, 爬取过程中我访问他页面是瞬间打开的, 跟平时没有区别... 而且当时在凌晨, 那个时间段我估计他网站也没有流量
winnerczwx
2020-07-13 21:47:42 +08:00
@just1 cpu 在百分之 40-50 左右, 内存在百分之十几
jones2000
2020-07-14 01:19:58 +08:00
都是开源的直接看源码呗, 查下这个并发是同时启动 500 个线程吗?如果不是,就改源码同时开 500 个线程同时抓。
jones2000
2020-07-14 01:20:14 +08:00
先确保你这个“并发设置是 500” 是 1 个进程里同时开 500 个线程去抓取吗? 还是使用多进程+多线程的方式达到 500 个同时抓。
herozzm
2020-07-14 01:35:15 +08:00
我用 go 写的爬虫,家用带宽,爬的外面的多个网站,1000 多并发一点问题没有啊
locoz
2020-07-14 09:05:04 +08:00
你可以打日志记录一下请求、解析、入库这三步每一步的耗时,这样就能很直观地看出哪一步慢、哪一步会被别的东西卡住了,然后再继续细化日志粒度、结合断点就能找到问题点。

另外,单机 50 并发对于单个网站而言已经挺高了,更别提 500 了…建议别搞那么高并发,对你自己好对别人服务器也好。
locoz
2020-07-14 09:10:36 +08:00
@heiheidewo #7 也不一定,涉及到别人的利益也可以是恶意爬虫🤣
imdong
2020-07-14 10:13:09 +08:00
并发跑 500 。不知对方是什么网站,怎么得罪人了...

一秒跑 50 个,对于普通个人小站来说,已经是挺大的负载了(如果都是动态页的话)。

楼主不妨本地建一个,镜像站,然后你爬 127.0.0.1 试下能不能上去。
warcraft1236
2020-07-14 10:43:30 +08:00
scrapy 的并发配置贴出来看看?
d0v0b
2020-07-14 12:22:43 +08:00
@winnerczwx 恶意爬虫我的理解就是影响别人赚钱了,else 你爱咋咋滴
Cy86
2020-07-18 21:40:11 +08:00
@herozzm 每秒 1000 么, 我家运营商貌似限制 500 并发

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

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

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

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

© 2021 V2EX