Windows

Apache 無法處理每天 18k 的點擊量

  • January 17, 2010

嗨,我的伺服器似乎無法在高峰時段處理流量,而 Apache 似乎只是崩潰了。

以下是有關伺服器的一些資訊:

  • 至強 5110 @ 1.6ghz
  • 4Gb 記憶體
  • 視窗 2003 伺服器
  • 適用於 Windows 的 Apache 2.2.11
  • mod_fcgid(來自 apachelounge.com)
  • 安裝了 eAccelerator 的 PHP 5.2
  • 它還執行 MySQL 5.0

它還執行 PHP 應用程序,如 Mediawiki、Joomla、Wordpress 和 Drupal,我們每天的點擊量約為 18k。

以下是來自 httpd.conf 的一些重要配置:

# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15

##
## Server-Pool Size Regulation (MPM specific)
## 

# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum  number of requests a server process serves MaxClients 125
#<ifModule mpm_common>
#MaxClients 140
#</IfModule>

<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild  0
</IfModule>
### END

以下是 php.ini 中 eAccelerator 的配置:

[eAccelerator]
extension="eaccelerator.dll"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="C:\Temp\eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
accelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.keys = "shm"
eaccelerator.sessions = "shm"
eaccelerator.content = "shm"
eaccelerator.debug="0"

我知道在 Windows 機器上執行 Apache 是非常錯誤的,但我暫時不得不忍受這個(不幸的是不是我的電話)。

我的配置有問題嗎?是否有解決方案使伺服器可以處理負載?任何幫助,將不勝感激。提前致謝!

Apache 不是你的問題;它無需任何調整即可處理大量負載。這是您的應用程序(可能還有您的數據庫)。對於預打包的 PHP 應用程序中的不良程式碼,您無能為力,但很少有大量工作用於數據庫調整和模式。我會首先關注那裡(記錄和優化慢查詢,針對工作負載和可用記憶體調整數據庫記憶體使用情況等)。

在 windows 下你最好的辦法是使用 IIS 和 fastCGI。這使您可以循環使用 CGI 程序,而無需執行大量的 CGI 程序。這可能會扼殺性能。IIS 團隊有安裝 fastCGI的指南

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