prefork模式(默認)javascript
這個多路處理模塊(MPM)實現了一個非線程型的、預派生的web服務器,它的工做方式相似於Apache 1.3。它適合於沒有線程安全庫,須要避免線程兼容性問題的系統。它是要求將每一個請求相互獨立的狀況下最好的MPM,這樣若一個請求出現問題就不會影響到其餘請求。php
這個MPM具備很強的自我調節能力,只須要不多的配置指令調整。最重要的是將MaxClients設置爲一個足夠大的數值以處理潛在的請求高峯,同時又不能太大,以至須要使用的內存超出物理內存的大小。css
worker模式html
此多路處理模塊(MPM)使網絡服務器支持混合的多線程多進程。因爲使用線程來處理請求,因此能夠處理海量請求,而系統資源的開銷小於基於進程的MPM。可是,它也使用了多進程,每一個進程又有多個線程,以得到基於進程的MPM的穩定性。java
ServerLimit 1000 StartServers 10 MinSpareServers 10 MaxSpareServers 20 MaxClients 1000 MaxRequestsPerChild 5000
httpd.confweb
一、KeepAlive On/Offsql
KeepAlive指的是保持鏈接活躍,相似於Mysql的永久鏈接。換一句話說,若是將KeepAlive設置爲On,那麼來自同一客戶端的請求就不須要再一次鏈接,避免每次請求都要新建一個鏈接而加劇服務器的負擔。通常狀況下,圖片較多的網站應該把KeepAlive設爲On。apache
二、KeepAliveTimeOut number安全
若是第二次請求和第一次請求之間超過KeepAliveTimeOut的時間的話,第一次鏈接就會中斷,再新建第二個鏈接。它的設置通常考慮圖片或者JS等文件兩次請求間隔,個人設置經驗爲3-5秒。服務器
三、MaxKeepAliveRequests 100
一次鏈接能夠進行的HTTP請求的最大請求次數。將其值設爲0將支持在一次鏈接內進行無限次的傳輸請求。事實上沒有客戶程序在一次鏈接中請求太多的頁面,一般達不到這個上限就完成鏈接了。
四、StartServers 10
設置服務器啓動時創建的子進程數量。由於子進程數量動態的取決於負載的輕重,全部通常沒有必要調整這個參數。
五、MinSpareServers 10
設置空閒子進程的最小數量。所謂空閒子進程是指沒有正在處理請求的子進程。若是當前空閒子進程數少於MinSpareServers ,那麼Apache將以最大每秒一個的速度產生新的子進程。只有在很是繁忙機器上才須要調整這個參數。將此參數設的太大一般是一個壞主意。
六、MaxSpareThreads 20
設置空閒子進程的最大數量。若是當前有超過MaxSpareServers數量的空閒子進程,那麼父進程將殺死多餘的子進程。只有在很是繁忙機器上才須要調整這個參數。將此參數設的太大一般是一個壞主意。若是你將該指令的值設置爲比MinSpareServers小,Apache將會自動將其修改爲」MinSpareServers+1″。
七、ServerLimit 1000
服務器容許配置的進程數上限。只有在你須要將MaxClients設置成高於默認值256的時候才須要使用。要將此指令的值保持和MaxClients同樣。修改此指令的值必須徹底中止服務後再啓動才能生效,以restart方式重啓動將不會生效。
八、MaxClients 1000
用於伺服客戶端請求的最大請求數量(最大子進程數),任何超過MaxClients限制的請求都將進入等候隊列。默認值是256,若是要提升這個值必須同時提升ServerLimit的值。筆者建議將初始值設爲(以Mb爲單位的最大物理內存/2),而後根據負載狀況進行動態調整。好比一臺4G內存的機器,那麼初始值就是4000/2=2000。
九、MaxRequestsPerChild 5000
apache.exe進程包括一個是父進程、一個是子進程,父進程接到訪問請求後,將請求交由子進程處理。MaxRequestsPerChild這個指令設定一個獨立的子進程將能處理的請求數量。在處理「MaxRequestsPerChild 數字」個請求以後,子進程將會被父進程終止,這時候子進程佔用的內存就會釋放,若是再有訪問請求,父進程會從新產生子進程進行處理。 若是MaxRequestsPerChild缺省設爲0(無限)或較大的數字(例如10000以上)可使每一個子進程處理更多的請求,不會由於不斷終止、啓動子進程下降訪問效率,但MaxRequestsPerChild設置爲0時,若是佔用了200~300M內存,即便負載下來時佔用的內存也不會減小。內存較大的服務器能夠設置爲0或較大的數字。內存較小的服務器不妨設置成30、50、100,以防內存溢出。因此通常狀況下,若是你發現服務器的內存直線上升,建議修改該參數試試。
#LoadModule authn_file_module modules/mod_authn_file.so #LoadModule authn_dbm_module modules/mod_authn_dbm.so #LoadModule authn_anon_module modules/mod_authn_anon.so #LoadModule authn_dbd_module modules/mod_authn_dbd.so #LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so #LoadModule authz_user_module modules/mod_authz_user.so #LoadModule authz_dbm_module modules/mod_authz_dbm.so #LoadModule authz_owner_module modules/mod_authz_owner.so #LoadModule authz_default_module modules/mod_authz_default.so #LoadModule auth_basic_module modules/mod_auth_basic.so #LoadModule auth_digest_module modules/mod_auth_digest.so #LoadModule dbd_module modules/mod_dbd.so #LoadModule dumpio_module modules/mod_dumpio.so #LoadModule reqtimeout_module modules/mod_reqtimeout.so #LoadModule ext_filter_module modules/mod_ext_filter.so LoadModule include_module modules/mod_include.so #LoadModule filter_module modules/mod_filter.so #LoadModule substitute_module modules/mod_substitute.so LoadModule deflate_module modules/mod_deflate.so LoadModule log_config_module modules/mod_log_config.so LoadModule log_forensic_module modules/mod_log_forensic.so LoadModule logio_module modules/mod_logio.so LoadModule env_module modules/mod_env.so #LoadModule mime_magic_module modules/mod_mime_magic.so #LoadModule cern_meta_module modules/mod_cern_meta.so LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so #LoadModule ident_module modules/mod_ident.so #LoadModule usertrack_module modules/mod_usertrack.so #LoadModule unique_id_module modules/mod_unique_id.so LoadModule setenvif_module modules/mod_setenvif.so #LoadModule version_module modules/mod_version.so LoadModule mime_module modules/mod_mime.so #LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so #LoadModule autoindex_module modules/mod_autoindex.so #LoadModule asis_module modules/mod_asis.so #LoadModule info_module modules/mod_info.so #LoadModule cgi_module modules/mod_cgi.so #LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule vhost_alias_module modules/mod_vhost_alias.so #LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so #LoadModule imagemap_module modules/mod_imagemap.so #LoadModule actions_module modules/mod_actions.so #LoadModule speling_module modules/mod_speling.so #LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule jk_module modules/mod_jk.so
LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common #LogFormat "%h %{HTTP_HOST}i %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio LogFormat "%A - %h %{HTTP_HOST}i %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O \"%V %v:%p %T\" %{cookie}n" combinedio #CustomLog "logs/access_log" common
其中增長了%{cookie}配置,以供大數據平臺分析使用;
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from localhost 192.168.1.0/24 </Location>
#configure for mod_jk JkWorkersFile conf/workers.properties JkShmFile logs/mod_jk.shm JkLogFile logs/mod_jk.log JkLogLevel error
gzip能夠級大的加速網站.有時壓縮比率高到80%,近來測試了一下,最少都有40%以上,仍是至關不錯的.在Apache2以後的版本,模塊名不叫gzip,而叫mod_deflate
若是要開啓gzip的話,必定要打開下面二個模塊.
LoadModule headers_module modules/mod_headers.so LoadModule deflate_module modules/mod_deflate.so
設置壓縮比率,取值範圍在 1(最低) 到 9(最高)之間,不建議設置過高,雖然有很高的壓縮率,可是佔用更多的CPU資源.
DeflateCompressionLevel 6 AddOutputFilter DEFLATE html xml js css SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary
<IfModule usertrack_module> CookieExpires " 1 weeks" CookieStyle RFC2965 CookieName _m_data_ CookieTracking on </IfModule>
主要用於後臺Tomcat沒辦法正常使用時,主頁提示之用,如:升級頁面、網站臨時異常;
#<VirtualHost *:80> # ServerName www.domain.com # ServerAlias www.domain.com # DocumentRoot "/domain/apache2.2.25/htdocs" # ErrorLog "|/domain/apache2.2.25/bin/rotatelogs /domain/apache2.2.25/logs/update/errorlog-%Y-%m-%d 20M" #</VirtualHost> #<VirtualHost *:80> # ServerName *.domain.com # ServerAlias *.domain.com # DocumentRoot "/domain/apache2.2.25/htdocs" # ErrorLog "|/domain/apache2.2.25/bin/rotatelogs /domain/apache2.2.25/logs/update/errorlog-%Y-%m-%d 20M" #</VirtualHost>
<VirtualHost *:80> ServerName www.domain.com ServerAlias www.domain.com DocumentRoot "/domain/source/www/deploy/domain" SetEnvIf Request_URI \.gif NOLOG SetEnvIf Request_URI \.jpg NOLOG SetEnvIf Request_URI \.png NOLOG SetEnvIf Request_URI \.swf NOLOG SetEnvIf Request_URI \.css NOLOG SetEnvIf Request_URI \.js NOLOG SetEnvIf Request_URI \.ico NOLOG #SetEnvIf Request_URI "/fckeditor/.*" NOLOG ErrorLog "|/domain/apache2.2.25/bin/rotatelogs /domain/apache2.2.25/logs/error/domain-error-%Y%m%d.log 5M" CustomLog "|/domain/apache2.2.25/bin/rotatelogs /domain/apache2.2.25/logs/access/domain-access-%Y%m%d.log 86400 480" combinedio env=!NOLOG AddOutputFilterByType DEFLATE text/html JkMount /* domain_worker JKUnmount /*.js domain_worker JKUnmount /*.css domain_worker JKUnmount /*.img domain_worker JKUnmount /*.jpg domain_worker JKUnmount /*.png domain_worker JKUnmount /*.map domain_worker JKUnmount /image/* domain_worker JKUnmount /images/* domain_worker JKUnmount /upload/* domain_worker KeepAlive off ExpiresActive On ExpiresByType image/gif A2592000 ExpiresByType image/png A2592000 ExpiresByType image/jpg A2592000 ExpiresByType text/plain A2592000 ExpiresByType image/jpeg A2592000 ExpiresByType image/x-icon A2592000 ExpiresByType application/javascript A2592000 Header unset Expires DirectoryIndex index.htm RewriteEngine on RewriteCond %{HTTP_HOST} ^juran.cn$ [NC] RewriteRule ^/(.*) http://www.domain.com/$1 [R=301,L] RewriteRule ^.+/$ index.htm [L,R] ErrorDocument 404 /error.htm </VirtualHost> <Directory "/domain/source/www/deploy/domain/WEB-INF"> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> <Directory "/domain/source/www/deploy/domain"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) #定義重寫發生的條件 RewriteRule ^(.*)$ /index.php/$1 [L] RewriteLog D:/lib/rewrite.log #設置rewrite日誌文件,主要用來rewrite調試 RewriteLogLevel 3 #設置rewrite日誌文件記錄的等級,主要用來rewrite調試
Apache workers.properties配置
worker.list=controller,domain_worker,domain_worker1 worker.domain_worker.port=8009 worker.domain_worker.host=localhost1 worker.domain_worker.type=ajp13 worker.domain_worker1.port=8009 worker.domain_worker1.host=localhost2 worker.domain_worker1.type=ajp13 worker.controller.lbfactor=1 worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=domain_worker,domain_worker1