1

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

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

我的问题的关键是:运行 casperjs 的“最精简”环境是什么?我想尽可能地精简操作系统,以便能够扩展多个客户端。具体来说:

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

谢谢大家。我期待听到您对这个特定问题或类似经验/工具的意见,以实现我正在努力实现的目标......

费尔南多

4

1 回答 1

1

CasperJS 是无头的,例如它不需要运行 X 来运行。任何基本的 Linux 发行版都会对你有好处。

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

Arch非常轻量级,并且有一个易于遵循的初学者指南。Arch 的 AUR 有一个用于 CasperJS 的包,它的设置也非常简单。只需确保pacman -S base-devel在从 AUR 安装之前获取所需的基础开发包 (),因为Arch Build System需要它。

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

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


话虽如此,即使是轻量级的 Linux 环境对每个 CasperJS 实例将使用的内存量也没有多大帮助。根据可用的内存量,您可能会拉出几十个,但几百个可能不可行。这完全取决于每个网站使用多少内存。Casperjs 带有一些可能有助于减少内存的配置选项(例如,不加载图像、插件等),但这可能会破坏您的测试目的。

我能给的最好的建议是自己尝试一下。编写一个简单的脚本来打开您将要使用的页面并将回调传递给CasperJS 的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\"}'"

从这里您应该能够大致了解每个实例占用多少内存,以及您可以在一台机器上一次运行多少内存。

于 2013-09-30T14:59:04.077 回答