V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
find456789
V2EX  ›  问与答

scrapy 怎么提升速度?该如何排查瓶颈呢?

  •  
  •   find456789 · 2018-11-30 17:03:40 +08:00 · 1828 次点击
    这是一个创建于 2185 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我目前要爬一个网站, 数据量 20 亿,爬完存入数据库

    爬虫框架用的 scrapy 最新版,url 都是已知的,直接爬,如果有需要的信息,就提取出保存到数据库,没有需要的信息就继续爬下一个 url

    使用 scrapy-redis 分布式爬,目前有 10 台机器

    (对方网站没有反爬措施,我可以随心而欲,也不用担心对方会被爬死)

    现在,所有机器加起来,总共每秒只能处理处理 500-1000 条,那么 20 亿处理完需要大约 1 个月,我想尽可能的缩短这个时间

    我尝试修改 scrapy 的配置文件,把 CONCURRENT_REQUESTS 修改成了 500,速度似乎有所提升


    我的 redis 服务器( 2 个 vCPU,5GB 内存)

    cpu 维持在 15%左右, 传入字节 160kb/s,传出 100kb/s, 网络数据包 800/s, 磁盘写入 800kb/s, 磁盘写入 4 次 /s 这些数据似乎都不是很高,说明瓶颈可能不在 redis 上(我猜的,因为我不太懂 redis )


    我的数据库 1G 内存,最大允许 100 个连接数

    内存 45%左右,cpu 1%左右,数据库连接数 10 个


    我的 9 台爬虫机器( 1 个 vCPU,3.75GB 内存)

    cpu 维持在 70%左右 网络字节数 60kb/s, 网络数据包 200/s, 磁盘写入 20kb/s

    另外一台机器,配置更好,( 2 个 vCPU,7.5 GB 内存)

    cpu 维持在 10%, 其他数据更低


    想问问,除了加机器,还有什么具体的速度优化方案吗?

    应该如何排查瓶颈呢?

    如何最大化压榨这些机器的性能呢?

    非常感谢

    8 条回复    2018-11-30 17:42:19 +08:00
    x66
        1
    x66  
       2018-11-30 17:08:54 +08:00 via iPhone   ❤️ 1
    Mark,关注一下,或许一台机器上多部署几个也算一个方案?
    find456789
        2
    find456789  
    OP
       2018-11-30 17:11:29 +08:00
    @x66 谢谢 我试试
    PulpFunction
        3
    PulpFunction  
       2018-11-30 17:15:40 +08:00
    啥 20 亿数据能不设防?
    lerry
        4
    lerry  
       2018-11-30 17:21:13 +08:00
    瓶颈会不会在网站性能
    dongisking
        5
    dongisking  
       2018-11-30 17:31:05 +08:00 via Android
    Mark
    miniliuke
        6
    miniliuke  
       2018-11-30 17:39:23 +08:00 via Android
    换了 python 可能会快点,不是说是 python 的坑,是你的代码的问题,最好排查一下......怀疑你处理没有做多线程或异步,还有 python 的多线程的 cpu 性能也是有限制的
    find456789
        7
    find456789  
    OP
       2018-11-30 17:41:24 +08:00
    @lerry 应该不会
    find456789
        8
    find456789  
    OP
       2018-11-30 17:42:19 +08:00
    @miniliuke 谢谢 用的是 scrapy 这个框架,各方面应该不会很差, 应该是我不会配置 目前还是维持在 400 个 url/s ,要想办法突破 1k 才行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1910 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.