2012-01-31 139 views
2

我被客戶問到以下參數提供一個基於TYPO3網站: - 內容的少量(約50頁) - 非常小的變化頻率 - 平均庫存情況約95%/天 - 頁面20%的限制,登錄 後僅可 - 花式TYPO3擴展或別的東西(只TYPO3的核心) 無要求 - 中等大小的頁面 - 只有有限的數字資產(圖片等)包含縮放爲TYPO3網站

我有要求建立一個基礎設施,以服務多達1000個併發用戶。假設平均思考時間爲30秒。這將導致每秒33次請求。

基礎設施的外觀如何?我知道系統擴展是一項高度獨立的任務,取決於系統的實施和需要測試,但我需要首先指示從何處開始(單個服務器,將組件分離到不同的服務器......)。

有什麼想法?

+0

它太複雜的問題,給你一個有價值的答案。但是,我首先關注的是如何優化TYPO3網站的性能,如果這還不夠,那麼我會專注於系統方面的問題。所以谷歌的「TYPO3性能」。 3個關鍵字可能會幫助您專注於正確的東西:** eAccelerator **,**靜態文件緩存**,** memcached **。 – tmt 2012-01-31 14:09:29

+1

請勿使用eAccelerator,而應使用xCache或APC。下面介紹靜態文件緩存。不要將memcached用作緩存後端,而是使用APC或Redis(取決於您的PHP設置)。 – StephenKing 2012-01-31 15:55:48

+0

@StephenKing:eaccelerator是一個php緩存而不是數據庫緩存。他應該另外使用xCache或APC以及memcached和Redis。 – Bytemain 2012-01-31 16:32:00

回答

0

我會把它放在一個單獨的專用服務器(或精心指定的VPS)上,但可能會將所有靜態資產保留在第三方CDN上,以便您可以專注於動態內容。我不知道Typo3,但看不出有什麼理由說明爲什麼你不能在同一臺服務器上擁有你的數據庫以達到這個級別的使用 - 肯定會有各種緩存選項。或者也許考慮一個雲服務器,所以如果你需要更多的優點,只需添加更多的資源。

編輯:我不認爲這是一個好主意,建立一個可擴展的體系結構剛剛還沒有。代理服務器和所有這些東西。如果速度很慢,而且你發現你真的無法應付一臺機器,那麼在這一點上擴大規模。考慮到您預期的流量,我可以用更簡單的架構來做這件事。

2

更簡單的解決方案是EXT:nc_staticfilecache。這將靜態頁面保存爲HTML,並且您的Web服務器通過重寫規則自動傳遞它們(通過mod_rewrite處理Apache)。這對靜態內容非常有效,並且應該已經使您能夠執行> 100req/s。

更奇特的方法是使用Varnish Cache。 Varnish是一種反向代理服務器,可將您的網站內容保存在內存中,並可在專用主機上運行。如果您正確配置它(發送正確的緩存標題!),它將爲您提供線速(幾百萬條請求/秒)。還有TYPO3擴展moc_varnish,例如,在TYPO3中更改頁面時清除清漆緩存。還支持邊緣側包括例如僅從TYPO3中檢索用戶特定的數據,並使用清漆緩存中的頁面的靜態部分(除「歡迎用戶Foo Bar」..;)之外的所有內容)。

如上所述:不要忘記爲您的資產配置正確的緩存標題(過期等)。這已經從Web服務器上刪除了一些負載。

+0

順便說一下:您的客戶是否真的希望有1000個併發訪問者,或者他只想象可能有那麼多? ;-) – StephenKing 2012-01-31 14:01:46

+0

不,我真的不認爲它會那麼多,但這是合同的基礎;-) – 2012-01-31 14:12:24

+0

在我看來,代理的需求尚未得到證實 - 但是很好的信息,所以+1。 – halfer 2012-01-31 14:17:20

0

我會研究一個虛擬的sserver或ksm以及一個很好的mysql和php配置。當我有一個ksm時,我會調整Linux並使用iptables進行流量整形。專用的根服務器會很好,但它很昂貴。然後我會考慮使用帶有eaccellerator和memcache的nginx或lighttpd web服務器。如果這沒有幫助,我會嘗試使用優化標記來編譯php和mysql,或者我會嘗試使用英特爾C編譯器進行編譯。 ICC可以比gcc更好地優化C代碼。如果服務器有很多RAM,我會使用ramdisk。

+0

對不起,不好回答恕我直言。不要試圖撬動操作系統。從應用程序(TYPO3 + PHP)本身的良好設置開始。 – StephenKing 2012-01-31 15:58:10

+0

@StephenKing:你應該學會閱讀。我沒有辦法調整系統,但它在Linux中是普通的行爲,所以爲什麼不,如果你有辦法? – Bytemain 2012-01-31 16:15:24

+1

他正在尋求一個Web應用程序的解決方案。你爲什麼期望他編譯服務器軟件?也許他正在使用託管服務器,共享主機,或者有一位系統管理員,他們可能會這樣做。由於TYPO3配置錯誤,他可能會破壞所有性能,但他無法通過優化的二進制文件或虛擬硬盤來修復此問題。 – StephenKing 2012-01-31 17:07:34

2

這很有可能,已經做了這樣的事情。您至少需要一個具有> = 8GB RAM的專用服務器。

如果我們談論的基礎設施,最小的組合是:

  • 的nginx /光油前/負載均衡
  • Apache HTTP服務器
  • MySQL的可能是獨立的服務器上,可聚

性能優化在這種情況下非常重要。

進一步閱讀的一些鏈接:

+0

爲什麼不是nginx或lighttpd? Apache很複雜,並且是一個野獸。以及爲什麼專用服務器?一公里更便宜? – Bytemain 2012-01-31 21:36:35

+0

Apache有些沉重,是的,但它有非常好的功能基礎謝謝,可以調整以避免過載。 nginx可以使用,是的。什麼是「kms」,對不起? – 2012-02-01 09:56:45

+0

這是一個錯字。我的意思是KVM,請參閱http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine。你可以對客人有更多的控制權。您可以更改內核參數和編譯內核。 – Bytemain 2012-02-01 10:50:26