2013-09-22 95 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\"}'" 

從這裏你應該能夠看到每個實例需要大概多少內存,以及一次可以在一臺機器上運行多少內存。

相關問題