2013-05-18 25 views
0

因此,我託管了一個網站,目的是對它進行安全測試,所以我在perl中創建了一個腳本,它將生成高達60-72 Mbps(信息)的文件。我注意到如果我同時運行腳本多次,我會產生高達150 Mbps。在Perl的每個窗口中實現更高的Mbps

如何在不需要多次運行腳本的情況下達到150 Mbps的速度?

謝謝!

+3

使用fork產生更多進程 – user1937198

回答

2

您想打開多個TCP連接。

您將需要使用一個循環來處理所有管道已滿,或需要使用線程/進程的來回。正如有人在上面提到的那樣,您可以使用'fork'來製作腳本的多個副本,每個副本都可以創建一個TCP連接並輕鬆保持連接完整。這可能是簡單的解決方案。

如果你想保持你的程序作爲一個單一的過程,這是多一點工作,但仍然有可能。

如果打開連接的很多,你要這樣說的:http://www.kegel.com/c10k.html

您還可以考慮使用像C或者去更快的語言,因爲用perl確實涉及一些開銷。 (我會先做一個測試,也許開銷是微不足道的,用curl這樣的工具來發送一個大文件,看它是否比你的perl程序有更高的帶寬。)

0

正如評論所說,叉()會做到這一點。

您當前的腳本:

#!/usr/bin/perl 

generate_some_load(); 

添加叉:

#!/usr/bin/perl 

fork(); # now there are two processes running 

generate_some_load(); 

或者,如果你想開始一羣人

#!/usr/bin/perl 

my $num_to_start = 10; 

while($num_to_start-- > 0 && fork() != 0) { 

} 

generate_some_load(); 
0

我看你想要達到更高Mbps的隨着每個窗口,發生在我身上你可能會在「前臺」運行腳本,並需要打開一個新窗口開始anothher。你可能想要做的一件事是在後臺啓動你的腳本。

而不是

% your_script.pl 

如果用&運行,你將不必啓動多個窗口:

% your_script.pl & 
% your_script.pl & 
% your_script.pl & 
... 

有時你必須做重定向的一點點到/ dev/null,如下所示:

% your_script.pl > /dev/null 2>&1 &