2011-08-16 51 views
2

我們的數據庫服務器與我們的網絡服務器分開。數據庫服務器被複制(我們知道這裏有開銷)。但是,即使關閉了複製,PHP腳本中大量查詢的性能也比在同一臺機器上具有db和apache的暫存服務器慢4倍。我意識到網絡延遲和網絡的其他問題意味着它們不可能是平等的,但是我們的產品服務器指數級更強大,我們的生產網絡都在千兆交換機上。我們已儘可能優化MYSQL,但性能標記仍然低4倍。我們使用Apache代理和複製的MYSQL數據庫來運行nginx。 UCarp也在運行。對於尋求改善性能的領域,有哪些建議?我會對生產速度慢兩倍感到高興。如何提高網絡上的MYSQL性能

+0

這是非常困難的外部的人來診斷和提出建議,它可能是值得僱用承包商期待了幾個小時。 – 2011-08-16 23:51:02

回答

1

這是很難做的比在給你的描述黑暗中刺得多,但這裏的一些出發點,以自主嘗試,這將有望縮小的原因:

  • 將暫存數據庫到另一臺主機
  • 暫存主機添加到生產游泳池和刪除其他
  • 簡介你的PHP腳本,以確保它是導致延遲
  • 使用一個單獨的MySQL服務器的查詢,而不是通過負載平衡器
  • 測量單個查詢到生產池,並從MySQL客戶端的臨時服務器
  • 您的Web服務器和數據庫集羣之間
  • 運行的netperf
  • 資料與[GB] Web服務器教授
  • 簡介MySQL服務器接收與[GB]查詢教授

如果這些照明比預期的降解的任何其他由於遠程主機,則請提供一個可重複的測試案例和完整的MySQL配置(與敏感數據中刪除。)這將幫助更熟練的MySQL幫助你;)

0

並非網站上的每個Web請求都會(如果設計得當)需要mysql連接。最有可能的是,如果您需要每個http請求的連接,您的應用程序將不會擴展,並且會很快出現問題。

  1. 的應用可以更加緩存。服務器更少地請求mysql。例如。使用 memcache。

  2. 嘗試使用從應用程序到您的MySQL服務器的持久連接。

  3. 使用mysql數據壓縮。

  4. 縮減大小數據(限制你的選擇,而不是使用 「*」 在SELECT語句中列名)

薩滿調:

  • 確保,沒有什麼在減慢網絡mysql服務器:大型防火牆規則集,網絡過濾器等

  • 爲應用程序添加另一個(客戶端可訪問)網絡接口。服務器 和mysql服務器。應用程序之間

  • 調的網絡連接。服務器和mysql。有時你可以通過創建硬編碼的網絡路由贏得幾個ms。

不要以爲任何上述都會有幫助 - 如果網絡連接速度很慢,以上都不會大大加快速度。