Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

减少内存占用 #16

Closed
vvvsrx opened this issue Jun 3, 2016 · 3 comments
Closed

减少内存占用 #16

vvvsrx opened this issue Jun 3, 2016 · 3 comments

Comments

@vvvsrx
Copy link

vvvsrx commented Jun 3, 2016

写了个简单的规则抓取酒店信息,层级为:国家->城市->酒店.
数据量,国家200+,城市8万+,酒店70万+
目前,感觉效率非常低,用的是单机+web模式.
抓了一天才抓了200+的酒店,而且我只拿酒店的名称和描述.
系统为centos,top一下发现pholcus几乎占满了内存(4G),而数据量其实并不大.内存占满的情况下效率几乎为0...
我比较想知道,在抓取时,不会释放内存吗?这算是一个问题吗?

@andeya
Copy link
Owner

andeya commented Jun 4, 2016

你检查过你的I/O输出情况吗?
批量输出的大小、并发的多少都会影响内存的;
输出与抓取是异步的,假如输出始终慢于抓取速度,那么内存就会一直增加;
另外,你的规则逻辑、带宽也很重,问题是多方面的;
你从我提到这几方面,做一下分析。

@andeya
Copy link
Owner

andeya commented Jun 4, 2016

另外,我不知道你的使用的版本是不是含义gc回收监控的,这个一定程度也可以抑制内存增长。
因为go的对闲置内存是不会马上归还系统的,而Pholcus又是在高速运行,产生大量垃圾,因此gc的效果就不那么明显了,加了手动gc,可以一定程度弥补这一缺陷。

@vvvsrx
Copy link
Author

vvvsrx commented Jun 4, 2016

非常感谢回答!你说的几点对我来说是非常重要的信息~
I/O目前用的SSD,走的mysql,10000条信息存一次,用的系统默认,代码方面。是按照官方的写法做的,字段其实很少。GC方面我要研究下,还没接触过,总之,感谢!

@vvvsrx vvvsrx closed this as completed Jun 5, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants