2010-03-16 32 views
3

我需要爲大量的併發用戶運行Linux-Apache-PHP-MySQL應用程序(Moodle電子學習平臺) - 我瞄準的是5000個用戶。同時,我的意思是5000人應該能夠同時使用該應用程序。 「工作」不僅意味着數據庫讀取,而且寫入也是如此。什麼是適合重載LAMP應用的最佳硬件配置

該應用程序不是很典型,因爲它在數據庫上進行了大量的插入/更新操作,所以緩存技術並沒有多大幫助。我們正在使用InnoDB存儲引擎。此外,應用程序不是在考慮性能的情況下編寫的。例如,一個Apache線程通常佔用大約30-50 MB的RAM。

我將非常樂意瞭解需要哪些硬件來構建可以處理這種負載的可伸縮配置。

我們現在正在使用兩個帶有兩個4核心處理器的HP DLG 380,它們能夠處理更低的負載(通常爲300-500個併發用戶)。投資這種機箱並使用它們構建集羣是合理的還是採用更高端的硬件更好?

我特別好奇

  • 多少和多麼強大的服務器 需要
  • 什麼樣的網絡設備應該 使用(的RAM處理器/內核,大小號)(什麼樣的開關, 網卡)
  • 任何其它硬件, 等特定盤存儲 解決方案等,需要的是

另一件事是如何把所有東西放在一起,那就是最優化的架構。使用MySQL進行集羣相當困難(人們抱怨MySQL集羣,即使是在Stackoverflow上也是如此)。

+0

屬於serverfault.c – t0mm13b 2010-03-16 10:41:45

+0

我懷疑這是SO格式的問題。這更像是有償諮詢主題。甚至僱用經驗豐富的東西主題。 – 2010-03-16 11:42:27

+0

我只是想了解peopel如何解決類似應用中的這類問題 – 2010-03-16 12:34:00

回答

2

一旦您超過了幾臺物理機器不能提供您所需的峯值負載的情況,您可能需要開始虛擬化。

EC2可能是目前LAMP堆棧中最靈活的解決方案。您可以將他們的虛擬機設置爲物理機器,將它們集羣,隨着您需要更多計算時間將它們旋轉起來,在非高峯時間將其關閉,創建機器映像以便於系統測試。

有多種解決方案可用於負載平衡和自動旋轉。

如果您可以使您的應用程序合適,您也可以使用它們的非關係數據庫引擎。在非常高的負載下,關係數據庫(特別是MySQL)不能有效擴展。 SimpleDB,BigTable和類似的非關係數據庫的峯值負載可以在添加硬件時幾乎線性擴展。

儘管離開關係數據庫是一個巨大的步驟,但我不能說我自己從來都不需要這樣做。

+0

EC2接縫是一個不錯的選擇 – 2010-03-17 15:36:22

0

我不太確定硬件,而是從點的視圖軟件:

與將緩存中的對象和集合從數據庫返回一個高效的數據層,然後我會說標準的主-slave配置可以正常工作。將所有寫入路由到一個強壯的主節點,並將所有讀取路由到從屬節點,根據需要添加更多的從節點。

將數據緩存爲從data-mapper/ORM而不是HTML返回的對象,並將Memcached用作緩存層。如果你更新一個對象,然後寫入數據庫並在memcached中更新,最好使用IdentityMap模式。儘管您可能會在Web服務器上運行這些實例,但您可能需要安裝很多Memcached實例。

我們永遠無法使MySQL集羣正常工作。

小心你寫的SQL查詢,你應該沒問題。

+0

「我們永遠無法使MySQL集羣正常工作」......您是否嘗試過MySQL Cluster本身,或者您是指使用MMM還是DRBD或.. ?你嘗試了什麼? – Sam 2011-10-30 08:17:02

0

Piotr,你有沒有試過在moodle.org上問這個問題呢?有幾個類似的範圍安裝,其工作人員目前回答。另外,根據你的部署時間表,你可能想看看moodle 2.0的版本,而不是moodle 1.9的版本,看起來好像有很多針對moodle架構的一些問題的修正在那個版本。

另外:memcached岩石爲此。 PHP的加速岩石爲此。 serverfault可能是這個問題的更好的*交換網站,雖然

相關問題