2011-09-04 93 views
0

我使用的是一個非常依賴AJAX /數據庫的在線瀏覽器遊戲,而我遇到的問題是在高峯時段的延遲過高。提高網絡延遲 - 在線遊戲網站

我已經創建了一個簡單的AJAX ping,它在每秒循環中檢查服務器,並且最近5次ping的執行/響應時間被平均爲屏幕上顯示的「連接速度」。

大多數情況下,此延遲記錄的時間範圍爲100-350ms,具體取決於互聯網速度,客戶端的其他正在運行的網頁以及其他各種內容。但是,在我的服務器高峯時段,即晚上10點至11點東部標準時間,此延遲變得非常糟糕,以至於我的AJAX功能停止工作。在這些時間內的延遲可能在2000毫秒左右,有些人看到它高達6800毫秒。

我的問題是......最可能的原因是什麼?這是我的服務器上的硬件問題嗎?創建純粹由AJAX支持的瀏覽器遊戲是不可行的嗎?在這段時間裏,我經常遇到服務器本身的問題,我的控制面板返回了很多「無法爲選定任務分配內存」的錯誤,但是當我通過SSH運行free時,甚至沒有使用10%的RAM。

+1

如果連接速度thingie在所有客戶端上運行,我認爲它對服務器負載有很大貢獻... – fvu

+0

您每秒獲得多少個請求?一個簡單的網絡服務器無法無限擴展。而且大多數服務器並沒有爲每秒處理數千個AJAX請求服務,而是爲更復雜的頁面提供服務。 – Andreas

+0

退房node.js – Loktar

回答

1

您在您的Web應用程序或數據庫中遇到爭用。這可能在許多地方,因此有很多可能的解決方案,因此無法列出它們。有些你能想到的事情上

  1. 可用,因爲他們正在爲將鎖的線程數據庫同步調用來處理傳入的請求沒有線程,直到該數據庫返回位於DATABSE從而增加延遲
  2. 爭水平。您是否正在使用數據分區來支持真正的併發?
  3. 您是否通過您的Web應用程序提供靜態內容,可以將其作爲可直接尋址的資源進行檢索?
  4. 你負載平衡你的網絡應用程序?
  5. 您是否在Web應用上使用緩存?

這有點像「一根繩子有多長?」

希望這有助於一些。

+0

困惑在這一點2:分區來實現併發?即使在InnoDB表上表格不經常被鎖定,就像MyISAM中的情況一樣?有效點雖然,+1 – fvu

+0

感謝您考慮這些事情。當我嘗試優化遊戲時,我會考慮他們。 –

+0

@fvu - 從您將數據物理分隔(如臨時)到不同數據庫並使用解析器指向正確源的意義上來說,分區。我也意識到分割你的數據文件到不同的物理磁盤分區上的意義。這也是一個好主意,但並不總是容易取決於數據庫供應商。 –