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
macleek
V2EX  ›  Python

自己用 Django 写的一个爬虫网站访问经常会特别卡该如何查找原因呢?

  •  
  •   macleek · 2015-10-14 21:22:02 +08:00 · 3196 次点击
    这是一个创建于 3318 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虽然接触网站开发不久了,但是感觉自己还是小白。
    最近写了一个简单的小网站( http://dota.happylyang.com/ )抓取 Dota2 的直播比赛的信息和天梯积分,如下图:

    celery(python)用的是默认的配置, broker 是 redis ,服务器配置是 DO 上的 2G RAM 2CPUs , gunicorn 运行了 4 个 worker ,静态文件都在七牛。
    现在问题是经常加载的奇慢无比甚至超时无法访问, celery 的任务执行从 flower 上监控的情况来看失败的任务几乎没有,很正常。但是停掉 celery 和 mongodb 后访问速度就变快了。
    想请教下大家我该从哪些方面检查原因呢?

    8 条回复    2015-10-15 21:35:20 +08:00
    nooper
        1
    nooper  
       2015-10-14 22:26:52 +08:00
    你可以用 django-debug-toolbar 分析一下。
    ericls
        2
    ericls  
       2015-10-14 22:43:45 +08:00 via Android
    请问如何用 Django 写爬虫
    KotiyaSanae
        3
    KotiyaSanae  
       2015-10-14 22:53:08 +08:00
    恩,请 top 和 free 查一下内存占用和 cpu 负载。
    经验来看,通常是由于内存问题……
    macleek
        4
    macleek  
    OP
       2015-10-14 23:00:26 +08:00
    @KotiyaSanae
    开始的时候确实是内存问题啊 ,所以从 512M 升到了 2G ,泪
    free -m
    total used free shared buffers cached
    Mem: 2001 1843 158 0 214 793
    -/+ buffers/cache: 835 1166
    Swap: 4095 53 4042

    load average: 0.18, 0.16, 0.22

    现在速度还算正常,内存占用率还行,特别慢的时候也差不多是这个占用率。。
    macleek
        5
    macleek  
    OP
       2015-10-14 23:03:59 +08:00
    @ericls 我表述的不清楚==
    mutoulbj
        6
    mutoulbj  
       2015-10-15 08:43:29 +08:00
    mongodb 吃内存~
    KotiyaSanae
        7
    KotiyaSanae  
       2015-10-15 12:11:50 +08:00
    @macleek 这个内存占用算是很糟了,本来就不会 100%占用,过了一定的阈值就会使用 swap 吧。我怀疑特别慢的时候就是内存和 swap 频繁换入换出的时候……
    你看一下 mongodb 是否有堆积,如果有,请加大消耗的力度。
    个人没有使用过 mongo ,既然有吃内存的意见,我觉得您可以试试 redis 看会不会有好转。
    celery 之前我观察到,这玩意近乎会多消耗一倍的内存,如果内存吃紧,建议不要用。
    macleek
        8
    macleek  
    OP
       2015-10-15 21:35:20 +08:00
    @KotiyaSanae 这个内存还好吧,实际可以用的一半左右, cached 和 buffers 也算做可用内存哦。网站有时奇慢的原因我已经找到了,就是自己 Node 写的 server 太差了,超时的请求没有做处理,导致卡住,占用的资源也一直不能释放。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4094 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:12 · PVG 12:12 · LAX 20:12 · JFK 23:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.