Centos5

嘗試擴展我的專用伺服器以實現高流量

  • May 6, 2011

我現在有一個四核至強、8GB 記憶體和只有 2 個 1TB SATA 驅動器。我試圖弄清楚如何擴展我的應用程序以每天處理盡可能多的負載和流量。我有一個行業網站,目前每天有大約 30,000 名註冊使用者、60k UV 和 600-1,000,000 次網頁瀏覽量。速度太慢了,我不得不關閉伺服器,現在我正在損失金錢和流量。

我很確定其中的一部分是 PHP 程式碼和 MySQL 查詢(從印度僱用的)。我可以做些什麼來優化並確保伺服器處理盡可能多的流量而不會出現瓶頸。因為我希望每天都有更多的註冊。這是一個數據庫密集型站點,因為它是某個特定領域的“網路”站點,您必須登錄,所以一切都圍繞 MySQL。

PS。CentOS 5 64 位,PHP5,MySQL5。我知道數據庫是 MyISAM,而且我很確定他們也沒有很好地索引表。

感謝您的建議!

您可以做一些事情並進行檢查,以便為您提供有關該問題的更多資訊,進而更好地處理它:

  • 你必須找出究竟是什麼讓你的伺服器“變慢”。它是否使 CPU 最大化,是否耗盡 RAM 並使用交換空間,是否受到 IO 限制等…?每個都有不同的解決方案,因此您需要在嘗試解決問題之前了解問題所在。當真正的問題只是糟糕的 Apache 配置時,花時間修復數據庫將是對時間和資源的巨大浪費。
  • 某種形式的監控會很有用。這可以是簡單的東西,也可以是sar像 Nagios/Zabbix 這樣的完整包。這將幫助您現在縮小原因範圍以及以後查看您的解決方案的有效性(或無效性)。理想情況下,您希望在實際需要之前主動擴展。
  • 確保您正在執行 PHP 操作碼記憶體(APC、eAccelerator 等)。
  • 嘗試打開或關閉 MySQL 查詢記憶體。讀取繁重的應用程序可能會因打開它而受益,而寫入繁重的應用程序可能會因關閉它而受益。監控查詢記憶體統計數據會讓你知道它是幫助還是傷害。
  • 嘗試減少MaxClientsApache 以限制使用者數量,並希望減少伺服器負載。這可能使您的網站至少部分可用和可用。
  • 您是否對 MySQL 配置進行了任何修改?它通常採用的預設配置並不適用於“db-heavy”站點,您可以通過調整一些值來獲得顯著收益。在此處和網路上搜尋編輯配置的各種資源。
  • 檢查 MySQL 在top. 如果您的應用程序確實寫得很重,我希望/希望看到它至少使用 1GB,如果不是更多,取決於您的數據庫大小。如果它只使用幾個 100MB,或者使用 6-7GB,則可能存在配置問題。
  • 在 MySQL 表上創建索引很容易……困難的部分是弄清楚您需要哪些索引以及它們將有什麼好處(如果有的話)。這是一個有經驗的專業人士可以快速獲得回報的地方(假設問題確實在數據庫層)。
  • 如果您需要快速讓您的站點恢復執行,則擴展到多台機器可能是一個不錯的選擇。將數據庫放在一台機器上,Apache 放在另一台機器上。如果一台或機器達到高負載,這也將快速告訴您瓶頸是什麼。Apache 伺服器可能可以擴展到負載平衡器後面的多台機器,如果需要,可以將數據庫集群或擴展到更大的機器。從長遠來看,正確分析和優化您的應用程序和硬體可能會更便宜,但有時您只需要讓它在昨天工作。這也是專業人士可以為您節省大量時間和快速啟動和執行的麻煩的地方。
  • 當(或如果)您確實重新上線時,最好擁有某種形式的監控和基準測試。了解您的限制和目前/平均參數將允許您在伺服器崩潰之前進行擴展。

希望這會有所幫助,祝你好運!

引用自:https://serverfault.com/questions/266462