Apache-2.2

如何在有大量並髮使用者的情況下提高我的 Drupal 站點的性能?

  • August 29, 2013

我有一個 Drupal 站點,它在發佈時可能會獲得很高的命中率。我們為首次發布租用了一個非常強大的伺服器,之後我們將縮減規模。該伺服器具有 Xeon E5-2670 8 核處理器 @ 2.6ghz 和 30gb 記憶體。

MySQL 已獲得大量記憶體,我已確認 MySQL 實際上是通過“top”使用該記憶體:

innodb_buffer_pool_size = 15G

PHP 已獲得大量記憶體(幾乎可以肯定,現在我注意到評論說“每個腳本”):

memory_limit = 6000M

Apache 配置是開箱即用的預設配置:

StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000

我一直在執行 JMeter 測試(基本上“在站點上拋出盡可能多的執行緒並儘可能快地請求頁面”),我可以看到性能隨著並髮使用者數量的增加而下降:

  • 5 個使用者:約 1 秒的平均響應時間
  • 10 個使用者:約 1.3 秒的平均響應時間
  • 20 個使用者:約 2.5 秒的平均響應時間

但是,機器上的負載仍然很低。在測試期間,“top”報告了 26gb 的可用記憶體,並且“uptime”的平均負載不超過 0.63。我懷疑我們仍然有很多資源可以用來提高性能,但 Apache 並沒有充分利用這些資源。也就是說,我是開發人員而不是系統管理員,我也不是伺服器性能方面的專家。

為了提高性能,我能做的最好的改進是什麼?

Drupal Answers可能更適合這個問題,但這裡有幾件事適合您:

  • 盡可能在 Drupal 和伺服器上使用記憶體。
  • 如果您的大部分流量都是匿名的,請考慮使用反向代理,例如Varnish有一個模組可以幫助 Drupal 更好地利用 Varnish。如果您決定實施 Varnish,請使用它。
  • 考慮使用類似memcache的東西。
  • 如果您的 Drupal 站點是在 Drupal 6 中建構的,那麼請考慮將原始 Drupal 程式碼轉換為Pressflow Drupal站點(這很容易)。Pressflow 包含了許多性能優化(但如果您正在執行 Drupal 7,這還沒有實際意義)。

現在對於 Apache…. 不要使用開箱即用的 Apache 配置。您需要將 Apache 調整到您的站點。假設您正在使用mod_prefork(我會說這很有可能,但只有您可以確定)以下是其完成方式的基礎知識,但您真的應該僱用知道他們在做什麼的人。

  • 找出您希望 Apache 能夠使用的最大記憶體量。
  • 大量測試您的網站,並確定每個 Apache 程序使用多少記憶體(使用top)。
  • 取頂部使用記憶體最多的 Apache 程序,為它添加一點以作為衡量標準,然後將您的第一個數字(您希望 Apache 使用的最大記憶體量)除以這個新數字。
  • 你得到的數字應該是你的MaxClients&ServerLimit變數。

這當然不是最終的答案。調整您的伺服器需要時間,並且需要經驗才能做到恰到好處。祝你好運。

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