因此,我託管了一個網站,目的是對它進行安全測試,所以我在perl中創建了一個腳本,它將生成高達60-72 Mbps(信息)的文件。我注意到如果我同時運行腳本多次,我會產生高達150 Mbps。在Perl的每個窗口中實現更高的Mbps
如何在不需要多次運行腳本的情況下達到150 Mbps的速度?
謝謝!
因此,我託管了一個網站,目的是對它進行安全測試,所以我在perl中創建了一個腳本,它將生成高達60-72 Mbps(信息)的文件。我注意到如果我同時運行腳本多次,我會產生高達150 Mbps。在Perl的每個窗口中實現更高的Mbps
如何在不需要多次運行腳本的情況下達到150 Mbps的速度?
謝謝!
您想打開多個TCP連接。
您將需要使用一個循環來處理所有管道已滿,或需要使用線程/進程的來回。正如有人在上面提到的那樣,您可以使用'fork'來製作腳本的多個副本,每個副本都可以創建一個TCP連接並輕鬆保持連接完整。這可能是簡單的解決方案。
如果你想保持你的程序作爲一個單一的過程,這是多一點工作,但仍然有可能。
如果打開連接的很多,你要這樣說的:http://www.kegel.com/c10k.html
您還可以考慮使用像C或者去更快的語言,因爲用perl確實涉及一些開銷。 (我會先做一個測試,也許開銷是微不足道的,用curl
這樣的工具來發送一個大文件,看它是否比你的perl程序有更高的帶寬。)
正如評論所說,叉()會做到這一點。
您當前的腳本:
#!/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();
我看你想要達到更高Mbps的隨着每個窗口,發生在我身上你可能會在「前臺」運行腳本,並需要打開一個新窗口開始anothher。你可能想要做的一件事是在後臺啓動你的腳本。
而不是
% your_script.pl
如果用&運行,你將不必啓動多個窗口:
% your_script.pl &
% your_script.pl &
% your_script.pl &
...
有時你必須做重定向的一點點到/ dev/null,如下所示:
% your_script.pl > /dev/null 2>&1 &
使用fork產生更多進程 – user1937198