虽然接触网站开发不久了,但是感觉自己还是小白。
最近写了一个简单的小网站( http://dota.happylyang.com/ )抓取 Dota2 的直播比赛的信息和天梯积分,如下图:
celery(python)用的是默认的配置, broker 是 redis ,服务器配置是 DO 上的 2G RAM 2CPUs , gunicorn 运行了 4 个 worker ,静态文件都在七牛。
现在问题是经常加载的奇慢无比甚至超时无法访问, celery 的任务执行从 flower 上监控的情况来看失败的任务几乎没有,很正常。但是停掉 celery 和 mongodb 后访问速度就变快了。
想请教下大家我该从哪些方面检查原因呢?
1
nooper 2015-10-14 22:26:52 +08:00
你可以用 django-debug-toolbar 分析一下。
|
2
ericls 2015-10-14 22:43:45 +08:00 via Android
请问如何用 Django 写爬虫
|
3
KotiyaSanae 2015-10-14 22:53:08 +08:00
恩,请 top 和 free 查一下内存占用和 cpu 负载。
经验来看,通常是由于内存问题…… |
4
macleek OP @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 现在速度还算正常,内存占用率还行,特别慢的时候也差不多是这个占用率。。 |
6
mutoulbj 2015-10-15 08:43:29 +08:00
mongodb 吃内存~
|
7
KotiyaSanae 2015-10-15 12:11:50 +08:00
@macleek 这个内存占用算是很糟了,本来就不会 100%占用,过了一定的阈值就会使用 swap 吧。我怀疑特别慢的时候就是内存和 swap 频繁换入换出的时候……
你看一下 mongodb 是否有堆积,如果有,请加大消耗的力度。 个人没有使用过 mongo ,既然有吃内存的意见,我觉得您可以试试 redis 看会不会有好转。 celery 之前我观察到,这玩意近乎会多消耗一倍的内存,如果内存吃紧,建议不要用。 |
8
macleek OP @KotiyaSanae 这个内存还好吧,实际可以用的一半左右, cached 和 buffers 也算做可用内存哦。网站有时奇慢的原因我已经找到了,就是自己 Node 写的 server 太差了,超时的请求没有做处理,导致卡住,占用的资源也一直不能释放。
|