2012-01-25 81 views
0

這裏有一個奇怪的問題。我們正在將網站遷移到新的軟件平臺。作爲此次遷移的一部分,我們必須將文件從一個Amazon S3存儲桶複製到另一個。有數十萬個文件。每個客戶端打開兩個以上的連接到apache

我們還必須使用我們的軟件(phpFox)來做到這一點。基本上是一個PHP框架。

作業被分解爲我們使用URL中的偏移量調用的片段。

基本上是: 複製10個文件,並更新數據庫作爲必要 增加10 漂洗,重複偏移。

API流量很輕,服務器上的負載低於1%,但是,如果我們在服務器上的任意一臺計算機上打開兩個以上的選項卡,則腳本會按比例開始減速,就好像Web服務器Apache)排隊命令,而不是並行運行它們。

我們發現,如果我們在許多機器上打開兩個選項卡,它會按預期擴展。爲了使我們的上行鏈路飽和或者在服務器上施加任何明顯的負載,我們需要用筆記本電腦填滿房間。雖然滑稽,但這也是非常不切實際的,並且通常是屁股疼痛。這裏有一個更好的方法。

我試着增加最大的備用過程,並要求每個孩子等等10倍,並沒有明顯的速度增加。我們缺少什麼?我如何很好地告訴Apache暫時讓任何人連接多次,然後按照他們的意願去堅持?

PHP 5.3.8 PHP 沙比:apache2handler PHP加載擴展:核心日期額日格libxml的OpenSSL的PCRE sqlite3的zlib的bcmath時歷CTYPE捲曲DOM FileInfo的過濾FTP GD哈希的iconv SPL JSON MBSTRING MySQL的會議標準的POSIX反思的Phar SimpleXML的插座SQLite的IMAP標記生成XML的XMLReader的XmlWriter拉鍊apache2handler

MYSQL:MySQL的5.0.92社區

感謝您的閱讀!

回答

0

大多數網絡瀏覽器對於給定Web服務器的併發連接數量都有限制。我不知道所有的瀏覽器,但瀏覽器的一個我知道,它可以被配置爲是Mozilla Firefox瀏覽器,使用Fasterfox擴展:

https://addons.mozilla.org/en-US/firefox/addon/fasterfox-9148/

話雖這麼說 - 是真的沒有辦法,你可以編寫一個腳本來在服務器上執行遷移,而不是通過Web界面運行它?

+0

即使是一個簡單的預生成的shell腳本,其中包含數千行'wget's,在使用真實瀏覽器時效果會更好。然後根據需要開始儘可能多的終端會話。 –

+0

同意。有許多FAR更好的方法來做到這一點,但由於超出本論壇範圍的原因,我們堅持在網絡瀏覽器中進行。甚至嘗試過使用Web服務器上的elinks(它是從本地主機請求的,幾乎消除了進程中的網絡滯後),仍然沒有快樂 –

+0

@duskwuff不,我希望有。我們堅持使用上面定義的參數。也就是說,我安裝了firefox插件,但沒有幫助,但爲了測試理論,我打開了一份firefox,IE,chrome和safari的副本,該死的東西正確縮放。 而不是每秒1個請求,我得到了4.如果我在Firefox中打開4個標籤,即使使用插件(以各種方式配置),它仍然保持在1req /秒,頁面加載只需要更長的時間。 任何想法這裏發生了什麼?操作系統(Win7)是如何限制每個程序或某種程序的連接?我已經將FF中的最大連接設置爲96。 –

相關問題