2013-09-22 59 views
1

我是casperjs的新手,并计划使用它来准确地模拟从几十个到几百个并发会话访问专用网络上的私人服务器的任何地方。与典型的HTTP负载生成器(Apache bench,httperf,...)不同,我的目的是能够以编程方式控制每个会话(增加请求之间的延迟,在每个脚本中包含“智能”),并让每个会话具有不同的源IP地址。我现在的想法是使用OpenVZ容器(openvz.org)创建每个运行casperjs的“虚拟”客户端(我需要的最小功能是跟随用户界面上的元素并截取屏幕截图)。很想听到任何人做过类似的事情。运行多个casperjs实例的推荐环境是什么?

我的问题的症结在于:运行casperjs的'最细微'的环境是什么?我想尽可能剥离操作系统来扩展多个客户端。具体来说:

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

谢谢大家提前。我期待着听到关于这个具体问题或相似的经历/工具,我想要实现你的输入...

费尔南多

回答

1

CasperJS是无头的,例如它不需要X运行来运行。任何裸露的Linux发行版都会对你有所帮助。

CasperJS的任何推荐的低脚本UNIX/Linux发行版?

Arch非常轻巧,并且易于遵循Beginners Guide。 Arch的AUR有package for CasperJS也是pretty straightforward to setup。只需确保在从AUR安装之前抓取所需的基础开发包(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\"}'" 

从这里你应该能够看到每个实例需要大概多少内存,以及一次可以在一台机器上运行多少内存。

相关问题