关于爬虫并发量的疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
winnerczwx
V2EX    Python

关于爬虫并发量的疑问

  •  
  •   winnerczwx 2020-07-13 20:33:48 +08:00 3683 次点击
    这是一个创建于 1931 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在使用 scrapy 框架的过程中发现并发量上不去, 大概每秒 50 左右...想了解一下爬虫并发量除了跟网络, 源站点, 业务逻辑以外, 还有哪些因素会影响并发量呢?

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

    求大佬们解惑
    第 1 条附言    2020-07-14 00:25:23 +08:00
    附加一下相关信息:

    1. 单个页面大小在 3.4kb 左右
    2. cpu 稳定在 40% - 50%
    3. 内存在 14% 左右
    4. 单次入库的数据, 每个请求大约是几百汉字
    22 条回复    2020-07-24 10:55:41 +08:00
    opengps
        1
    opengps  
       2020-07-13 20:41:54 +08:00   1
    你怎么确定源站服务器性能没问题?你这么疯狂爬取,最大的问题就是源站压力,每秒 50,一个页面怎么说也得有几次的硬盘读取,普通硬盘的话 io 可能已经到了极限了
    winnerczwx
        2
    winnerczwx  
    OP
       2020-07-13 21:09:12 +08:00
    @opengps 因为我也想知道是不是源站服务器有压力...所以在爬取过程中也访问了源站的页面, 依旧是瞬间打开.... 一个页面没多少东西,去掉页头页尾和一些广告,正文部分只有几百字
    guochao
        3
    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
        4
    heiheidewo  
       2020-07-13 21:22:58 +08:00   1
    真特么服了楼主这种,我以前碰到一个人爬我的数据,nginx 设置了单个 ip 每秒请求 100 次,活生生被这个人打满了,最后我也没屏蔽他的 IP 。
    恶意爬虫就应该被抓起来批斗
    winnerczwx
        5
    winnerczwx  
    OP
       2020-07-13 21:33:15 +08:00
    @guochao 感谢!
    winnerczwx
        6
    winnerczwx  
    OP
       2020-07-13 21:33:55 +08:00
    @heiheidewo 请问怎样的爬虫属于善意, 怎样的又属于恶意?
    heiheidewo
        7
    heiheidewo  
       2020-07-13 21:38:39 +08:00
    @winnerczwx 只要影响了别人网站的业务就是恶意爬虫,要是不影响那就无所谓吧
    just1
        8
    just1  
       2020-07-13 21:42:37 +08:00
    top 看一下系统资源占用吧
    jugelizi
        9
    jugelizi  
       2020-07-13 21:44:31 +08:00 via iPhone
    控制频率是每个爬虫工程师值得做的事情
    winnerczwx
        10
    winnerczwx  
    OP
       2020-07-13 21:46:28 +08:00
    @heiheidewo 我在评论里回复了, 爬取过程中我访问他页面是瞬间打开的, 跟平时没有区别... 而且当时在凌晨, 那个时间段我估计他网站也没有流量
    winnerczwx
        11
    winnerczwx  
    OP
       2020-07-13 21:47:42 +08:00
    @just1 cpu 在百分之 40-50 左右, 内存在百分之十几
    jones2000
        12
    jones2000  
       2020-07-14 01:19:58 +08:00
    都是开源的直接看源码呗, 查下这个并发是同时启动 500 个线程吗?如果不是,就改源码同时开 500 个线程同时抓。
    jones2000
        13
    jones2000  
       2020-07-14 01:20:14 +08:00
    先确保你这个“并发设置是 500” 是 1 个进程里同时开 500 个线程去抓取吗? 还是使用多进程+多线程的方式达到 500 个同时抓。
    herozzm
        14
    herozzm  
       2020-07-14 01:35:15 +08:00
    我用 go 写的爬虫,家用带宽,爬的外面的多个网站,1000 多并发一点问题没有啊
    locoz
        15
    locoz  
       2020-07-14 09:05:04 +08:00 via Android
    你可以打日志记录一下请求、解析、入库这三步每一步的耗时,这样就能很直观地看出哪一步慢、哪一步会被别的东西卡住了,然后再继续细化日志粒度、结合断点就能找到问题点。

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

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

    楼主不妨本地建一个,镜像站,然后你爬 127.0.0.1 试下能不能上去。
    warcraft1236
        18
    warcraft1236  
       2020-07-14 10:43:30 +08:00
    scrapy 的并发配置贴出来看看?
    d0v0b
        19
    d0v0b  
       2020-07-14 12:22:43 +08:00
    @winnerczwx 恶意爬虫我的理解就是影响别人赚钱了,else 你爱咋咋滴
    Cy86
        20
    Cy86  
       2020-07-18 21:40:11 +08:00
    @herozzm 每秒 1000 么, 我家运营商貌似限制 500 并发
    Kvip
        21
    Kvip  
       2020-07-20 16:54:51 +08:00
    还是各位大佬勇啊,我搞爬虫从来不敢搞那么大并发,我开线程都不敢超过 50 个。一是人家运营网站也不容易,我们算是白嫖就别那么过分。其次是并发量太大,人家后台很容易看出来的,哪天被找上门了都没得后悔,毕竟很多爬虫都是违法的。
    2088TXT
        22
    2088TXT  
       2020-07-24 10:55:41 +08:00
    原则上不遵守 robots.txt 的不都是恶意爬虫 ?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5388 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 09:26 PVG 17:26 LAX 02:26 JFK 05:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86