运行多个casperjs实例的推荐环境是什么?

时间:2013-09-22 22:10:19

标签: linux casperjs openvz

我是casperjs的新手,并计划使用它来准确模拟从几十个到几百个并发会话访问私有网络上的私人服务器的任何地方。与典型的HTTP负载生成器(Apache bench,httperf,...)不同,我的目的是能够以编程方式控制每个会话(增加请求之间的延迟,在每个脚本中内置“智能”)并使每个会话具有不同的源IP地址。

我目前的想法是使用OpenVZ容器(openvz.org)来创建运行casperjs的每个“虚拟”客户端(我需要的最小功能是跟踪UI上的元素并截取屏幕截图)。很想听到任何做过类似事情的人。

我的问题的症结在于:运行casperjs的“最薄”环境是什么?我想尽可能地剥离操作系统,以便能够扩展多个客户端。具体做法是:

  • CasperJS的任何推荐的低占用空间的UNIX / Linux发行版?
  • 关于剥离主流(CentOS,Debian,...)发行版的任何具体建议?

提前谢谢大家。我期待听到您对这个具体问题或类似经验/工具的意见,以达到我想要实现的目标......

费尔南多

1 个答案:

答案 0 :(得分:1)

CasperJS无头,例如它不需要X运行来运行。任何简单的Linux发行版都能帮到你。

  

CasperJS推荐的任何低占用空间的UNIX / Linux发行版?

Arch非常轻量级,易于关注Beginners Guide。 Arch的AUR也有一个package for CasperJS pretty straightforward to setup。只需确保在安装AUR之前获取所需的base-devel包(pacman -S base-devel),因为Arch Build System需要它。

  

关于剥离主流(CentOS,Debian,...)发行版的任何具体建议?

没有那么多剥离,但CrunchBang基于最新的Debian版本。可能值得一看。设置比Arch更麻烦,并使用与Debian / Ubuntu相同的APT包管理器。它使用轻量级OpenBox窗口管理器进行安装,但如果您愿意,可以将它们和X一起删除。


话虽如此,即使是轻量级的Linux环境也无助于每个CasperJS实例将使用的内存量。根据可用内存量的不同,您可能需要几十个,但几百个可能不可行。这一切都取决于每个网站使用多少内存。 Casperjs带有some configuration options可能有助于减少内存(例如,不加载图像,插件等),但这可能会破坏您的测试目的。

我能给出的最好建议就是亲自尝试一下。编写一个简单的脚本,打开您要使用的页面,并将回调传递给CasperJS's run()函数以使其保持活动状态(例如,不要退出Casper)。它可以很简单:

casper.start('http://example.com/site1', function () {});
casper.thenOpen('http://example.com/site2', function () {});
casper.run(function() { 
    // wait 60 seconds before exit . . . or remove to never exit
    setTimeout(function() { casper.exit(); }, 60000); 
} 

启动多个实例,并观察总内存使用情况。您可以使用cli工具top,或使用此别名来总计当前用户的内存使用量。

alias memu="ps -u $(whoami) -o pid,rss,command | awk '{print \$0}{sum+=\$2} END {print \"Total\", sum/1024, \"MB\"}'"

从这里你应该能够看到每个实例占用多少内存,以及一台机器上可以同时运行多少内存。