2009-12-01 67 views
0

對於可以向Apache服務器啓動的同時發生的Ajax請求的數量是否有限制?例如,考慮下面的函數更新頁面(原型JS)上的div元素:可以在Apache上啓動的Ajax請求的數量是否有限制

function trigger_content_update(cell) { 
    //asynchronous : false is required for this to work properly 
    $$('.update').each(function(update_item){ 
     new Ajax.Request('/neighbouring?.state=update_template&dummy='+(new Date()).getTime(),{ 
      asynchronous: false, 
      parameters: {divid: update_item.id, source: cell}, 
      onComplete: function(response) { 
       var elm = response.getHeader('Element'); 
       if ($(elm) !== null) { $(elm).update(response.responseText) } 
      } 
     }); 
}); 

} 

在我的HTML頁面,有標有「更新」 CSS選擇器8個div元素,從而推出8 ajax請求。該代碼工作正常與異步屬性設置爲false,但只要我設置異步:真我可以觀察(在Firebug)大多數Ajax請求返回500狀態(內部服務器錯誤)。

一旦發生這種情況,需要重新啓動Apache才能恢復。

+0

這可能與AJAX結束無關。您將在Apache服務器日誌中找到詳細的錯誤消息。如果您發佈該信息,人們可能會知道哪裏出了問題。 –

回答

2

我會檢查處理請求的服務器端代碼。

就Apache而言,您的Ajax請求只是一個POST - 就像您提交表單一樣。 8個併發請求應該很容易由Apache處理,所以它表明Apache正在運行的服務器端代碼被鎖定 - 可能是試圖寫入數據文件並發現它被鎖定?

+0

謝謝,我會用放大鏡檢查我的服務器端代碼並​​報告回來。 –

+0

事實證明,我的DB句柄類無法處理所有傳入的同時請求 –

2

我剛剛寫了一個測試用例,我發送了10000個同時Ajax調用服務。在Apache Tomcat上運行良好。所有的服務回來了一個正確的答案。

聽起來好像您的服務存在一些內部同步問題。

相關問題