我们使用phantomjs来截取各种网页的屏幕截图,url是由node.js服务器中的客户端发送的,这反过来又会产生phantomjs来截取屏幕截图并发送base64图像。理想的做法是创建多个phantomjs worker来完成这项工作吗?如果有5个客户端请求,则会有5个衍生进程。我已经将数量限制为5,而不考虑客户端请求的数量。但是,5个衍生进程是否也会将其推送到服务器上?
发布于 2015-12-04 23:58:34
回答你的问题:是,运行多个PhantomJS worker是完全没问题的。在我的硕士论文中,我爬行了100多万个网站,使用了多个workers (也是从Node.js衍生而来)。
要检查有多少工作进程可用于您的系统,可以使用工具nload和htop (适用于linux)。nload向您显示网络使用情况,htop向您显示内存和CPU的使用情况。只需启动一些PhantomJS实例来抓取一些页面,并监视资源的使用情况以检查限制。
您可能还想查看phantomjs-pool库(免责声明:我是作者),因为它将帮助您对作业进行排队,还可以处理各种错误可能性和超时。
我做了一些爬行的发现:
举个例子:在我的设置中,我的吞吐量被限制为8Mbit/s,这导致使用四个工作进程。
所有这些值都是我爬行过程的结果,当然,不同的网站可能会有很大的不同。
https://stackoverflow.com/questions/34000717
复制相似问题