2008-09-20 88 views
7

關於在一個盒子上設置LAMP堆棧,或者將MySQL移動到它自己的盒子上,還有很多信息,但是越來越多的信息似乎沒有很好的記錄。理想的多服務器LAMP環境

我現在的網絡環境是有能力問題,所以我在尋找最佳實踐關於配置調整,確定瓶頸安全

我目前各地舉辦400個站點,對冗餘和安全性的公平需求,所以我已經超越了單箱解決方案 - 但我不在一個完整的ISP或專門的網絡託管公司的層面。

任何人都可以指向我的一些很好的方向建立一個偉大的Apache網絡農場以期安全和未來擴展?我的網絡環境由2個冗餘的MySQL服務器,2個冗餘的Web內容服務器,2個負載平衡的前端apache服務器組成,這些服務器通過nfs安裝內容並在它們之間共享apache配置和會話目錄,以及一個「開發者「服務器也通過nfs掛載網絡內容,幷包含所有開發者帳戶。

我很滿意這個設置很多,但它似乎過早地窒息負載。

謝謝!

--UPDATE--

原來,「窒息的負荷」是與mod_log_sql,我用我的Apache日誌發送到mysql數據庫。通過重新配置web服務器將其sql語句寫入磁盤文件,然後創建一個單獨的進程將它們提交到數據庫,它允許web服務器更快地釋放它們的線程,並處理更大的負載。

+0

我會改變標題爲「理想的中等水平的LAMP環境」 – givanse 2008-09-20 15:21:07

回答

2

這樣做的教科書的方式將是用真實的經驗數據識別瓶頸。

難道是database,apache,網絡,cpu,內存,io?你需要更多內存,sharding+),是DiskIO,NFS網絡負載,做全表掃描的CPU嗎?

當你發現問題出在哪裏時,你可能會遇到這樣的問題,即由於代碼的工作方式,它不足以擴展基礎結構,並且最終需要爲你創建更多的實例當前設置或使代碼不同。

+0

更多鏈接:http://www.slideshare.net/Jakobo/scaling-lamp-stacks/ – svrist 2008-09-20 15:51:52

3

您需要能夠識別瓶頸和測試改進。

要識別瓶頸,您需要使用系統的報告工具。一些例子:

  • MySQL有一個慢查詢日誌。
  • Linux提供像load average,iostat,vmstat,netstat等統計信息。
  • Apache有訪問日誌和服務器狀態頁面。
  • 編程語言具有分析器,如Pear Benchmark

使用這些工具來識別最慢/最大的罪犯,並專注於他們。嘗試改進並衡量它是否確實提高了性能。

由於兩個原因,這成爲一個永無止境的循環:複雜系統中總有一些東西可以更快,隨着系統的增長,不同的功能會開始放慢速度。

根據你係統的描述,我的第一個預感應該是NFS服務器上的磁盤io和網絡io,然後我會看看MySQL的查詢時間。我還會檢查共享會話的性能。

0

我還建議作爲可擴展性的第一步,將您的內容卸載到Edgecast等CDN。使用您當前的兩臺內容服務器作爲其他Web服務器。