Windows
Apache 無法處理每天 18k 的點擊量
嗨,我的伺服器似乎無法在高峰時段處理流量,而 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的指南