Apache服務(wù)器優(yōu)化方法
添加時(shí)間:2016-7-27 21:24:22
添加:
思海網(wǎng)絡(luò)
Apache服務(wù)器優(yōu)化
這個(gè)是一些個(gè)人的總結(jié),下面的優(yōu)化總的來講,還是相當(dāng)有用的,優(yōu)化和不優(yōu)化還是比較明顯的.
下面開始正題
ExtendedStatus On 因?yàn)閷懭腩~外的時(shí)間標(biāo)志,設(shè)off。
MPM:worker-多進(jìn)程多線程新型設(shè)計(jì),適合高流量服務(wù),但是不穩(wěn)定,對(duì)象php之類支持非常差,不推薦, prefork-穩(wěn)定,無線程,占用較多內(nèi)存。
HostnameLookups off 關(guān)掉,這樣少一dns查詢,日志處理可以另外用軟件。
注釋LoadMoule指令中不要的模塊。
一般說來,不需要的模塊包括:
代碼如下:
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.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 info_module modules/mod_info.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 actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
#比如:需要在~/username/下調(diào)試php可以將
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
#cgi程序用到,象awstats之類需要用到
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
上面只是我總結(jié)的,部分用不到的,有大俠指點(diǎn)一下還有那些可以不要....
文件夾Directory的選項(xiàng)的優(yōu)化Options Indexes Includes FollowSymLinks ExecCGI
AllowOverride None
ExecCGI 允許執(zhí)行 CGI 腳本。如果該選項(xiàng)沒有設(shè)置,則 CGI 腳本將不能執(zhí)行。如果沒有必要最好不要開啟,有可能會(huì)有安全性問題.
Includes 允許服務(wù)器端包含。服務(wù)器端包含允許一個(gè) HTML 文件包含其他文件。這個(gè)平時(shí)用不到,他要檢查每個(gè)html所以不要開啟.
IncludesNOEXEC 允許服務(wù)器端包含,但 CGI 腳本中的 #exec 和 #include 指令無效。不常用,關(guān)掉
Indexes 如果 DirectoryIndex (如 index.html) 在請(qǐng)求的目錄沒存在的話,按一定方式顯示目錄內(nèi)容列表.這個(gè)用的太多了,開啟吧.
FollowSymLinks 最好關(guān)掉符號(hào)連接,Apache就必須執(zhí)行額外的系統(tǒng)調(diào)用以驗(yàn)證符號(hào)連接。文件名的每一個(gè)組成部分都需要一個(gè)額外的調(diào)用.當(dāng)打開這個(gè)選項(xiàng)時(shí),Apache 將檢查每個(gè)請(qǐng)求中是否包含對(duì)符號(hào)連接的引用,這將對(duì)請(qǐng)求中包含的每個(gè)路徑調(diào)用一次lstat()系統(tǒng)調(diào)用。在請(qǐng)求"/index.html" 時(shí),Apache將對(duì)"/www"、"/www/htdocs"、"/www/htdocs/index.html"執(zhí)行l(wèi)stat()調(diào)用。而且 lstat()的執(zhí)行結(jié)果不被緩存,因此對(duì)每一個(gè)請(qǐng)求都要執(zhí)行一次。除非你準(zhǔn)備使用符號(hào)連接,否則用 Options -FollowSymLinks 來關(guān)掉它。 用一個(gè)破折號(hào)引導(dǎo),從而禁用此指令。
AllowOverride 這個(gè)選項(xiàng),是開啟如包括htaccess來進(jìn)行權(quán)限控制,Apache必需首先在當(dāng)前目錄中查找是否存在這個(gè)文件,如果存在就解析這個(gè)文件并在當(dāng)前目錄中應(yīng)用文件中的設(shè)置。更壞的是,Apache不僅要查看當(dāng)前的目錄,還要查看當(dāng)前目錄的所有上層目錄是否包括htaccess文件以根據(jù)所有這些文件最終確定設(shè)置。例如請(qǐng)求"/index.html",則Apache會(huì)試圖打開"/.htaccess"、"/www/.htaccess"、"/www /htdocs/.htaccess"。其解決方法 AllowOverride None來關(guān)掉,當(dāng)然,這樣做靜態(tài)化就只能寫在VH的配置中了,禁用后設(shè)置文件僅在服務(wù)器啟動(dòng)時(shí)解析一次 。
DirectoryIndex index*,不要使用通配符,全用完整列表,如irectoryIndex index.cgi index.pl index.shtml index.html。當(dāng)然,最少好些,明確的指定設(shè)置文件列表,放在最前最合理。
啟用了持久鏈接Keepalive,這樣子進(jìn)程將保持忙碌狀態(tài)以等待被打開連接上的新請(qǐng)求。如果開啟KeepAliveTimeout的默認(rèn)值被設(shè)置為5秒。最好不要大于60秒。
禁用日志
寫入日志信息是一個(gè)很花費(fèi)時(shí)間的工作,盡管Apache保持日志文件的打開狀態(tài)以節(jié)省打開文件的時(shí)間,但仍然得花費(fèi)不少的時(shí)間。如果沒有必要存儲(chǔ)日志信息,你可以關(guān)閉這個(gè)選項(xiàng)以節(jié)省出更多的處理器時(shí)間,只需要在設(shè)置文件中把日志那一行注釋掉就可以關(guān)掉它。當(dāng)然,實(shí)在需要,最要加入另一個(gè)單盤來管理日志存儲(chǔ).
靜態(tài)內(nèi)容方面
如果你的WEB服務(wù)器使用了大量靜態(tài)內(nèi)容或者你分別用兩個(gè)WEB服務(wù)器處理動(dòng)態(tài)和靜態(tài)內(nèi)容,那么你現(xiàn)在的主要目標(biāo)就是縮短服務(wù)器發(fā)送被請(qǐng)求內(nèi)容的響應(yīng)時(shí)間,最簡單的方法就是使用mod_cache緩存模塊。你可以使用mod_disk_cache和mod_mem_cache來分別提供基于磁盤的緩存和基于內(nèi)存的緩存。
優(yōu)化動(dòng)態(tài)內(nèi)容
動(dòng)態(tài)內(nèi)容可能是所有WEB服務(wù)器中最消費(fèi)時(shí)間的部分,特別是使用CGI的時(shí)候,一個(gè)簡單的程序都可能會(huì)把響應(yīng)時(shí)間增加好幾秒。
使用基于腳本的方案的一大好處是它們在Apache里裝入了解釋器,這就減少了執(zhí)行時(shí)再裝入解釋器的時(shí)間,一些方案還把解析過的腳本緩存起來,這樣下一次遇到同樣的請(qǐng)求就可以直接執(zhí)行而無需再次解析。當(dāng)然也可以應(yīng)用的服務(wù)分離,象使用php的fastcgi來在后面跑,前面給Web服務(wù)器.
對(duì)特定系統(tǒng)的調(diào)整優(yōu)化很復(fù)雜而且很花時(shí)間,而且你需要調(diào)整特定的腳本以利用優(yōu)化的成果。
不過對(duì)動(dòng)態(tài)內(nèi)容的優(yōu)化效果是非常明顯的,僅僅是把perl腳本的執(zhí)行模式從CGI轉(zhuǎn)到mod_perl就可以減少多達(dá)70%的執(zhí)行時(shí)間,如果我們進(jìn)一步,還可以使用到數(shù)據(jù)庫的持久連接或在多次請(qǐng)求之間緩存信息,這對(duì)電子商務(wù)網(wǎng)站非常有用,它也減小了不同請(qǐng)求間重復(fù)裝載信息的開銷。
總的來講,網(wǎng)站的動(dòng)態(tài)內(nèi)容腳本和CGI是影響網(wǎng)站性能的最重要方面(所以好的程序員很重要),如果你管理一個(gè)典型的Apache服務(wù)器你會(huì)發(fā)現(xiàn)Apache響應(yīng)一個(gè)傳入連接以及最后把內(nèi)容發(fā)送給客戶的所花費(fèi)的時(shí)間是以毫秒記的,而等待所需數(shù)據(jù)資源的時(shí)間常常達(dá)到幾秒鐘。
其它優(yōu)化
可以把 Apache(httpd)的優(yōu)先級(jí)改為 -15,這已經(jīng)接近上限(優(yōu)先級(jí)從最高的 -20 到最低的 19)。可以從命令行使用這兩個(gè)實(shí)用程序:
* 要想停止現(xiàn)有服務(wù)并以優(yōu)先級(jí) -15 重新啟動(dòng)它,可以發(fā)出命令 nice -15 httpd
* 要想避免停止服務(wù),可以發(fā)出命令 renice -15 -p 1996
這里的差異是 renice 需要進(jìn)程 ID(或 pid)。如上所述,可以使用 top 查明 pid。nice 和 renice 是很靈活的程序
配置mod_expires模塊(這個(gè)非常有用的優(yōu)化哦)
mod_expires可以減少20-30%左右的重復(fù)請(qǐng)求,讓重復(fù)的用戶對(duì)指定的頁面請(qǐng)求結(jié)果都CACHE在本地,根本不向服務(wù)器發(fā)出請(qǐng)求。除開用戶有發(fā)送no-cache才會(huì)更新,但要注意更新快的文件不要這么做.
mod_expires的安裝配置:
代碼如下:
ExpiresActive On
ExpiresDefault A60
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-java A2592000
ExpiresByType text/css A2592000
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/plain A604800
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
ExpiresByType application/pdf A604800
ExpiresByType text/html A60
另外高速的web服務(wù),就可以把noatime參數(shù)加入/etc/fstab文件中
lnux文件系統(tǒng)當(dāng)文件被訪問,創(chuàng)建,更新的時(shí)候會(huì)保留紀(jì)錄。默認(rèn)的,當(dāng)文件讀寫操作的時(shí)候,系統(tǒng)會(huì)更新last-time-read屬性。因?yàn)閷懖僮魇潜容^耗費(fèi)資源的操作,減少不必要的i/o可以整體上提高磁盤性能。
在掛接文件系統(tǒng)的時(shí)候,加入noatime參數(shù)可以禁止inode節(jié)點(diǎn)訪問時(shí)間的修改。如果文件更新時(shí)間對(duì)于特定的應(yīng)用不是很重要的話,比如web服務(wù),就可以把noatime參數(shù)加入/etc/fstab文件中
比如:
/dev/sdb1 /mountlocation ext3 defaults,noatime 1 2
推薦利用單獨(dú)的分區(qū)作為掛接點(diǎn)并打開noatime開關(guān)
也可以關(guān)掉的服務(wù)(這個(gè)好象誰都明白),apmd,autofs,cups,hpoj.isdn,pcmcia,rhnsd,sendmail,xfs(字體服務(wù))
打開重用TCP/IP中的time-wait套接
sysctl -w net.ipv4.tcp_tw_reuse=1
啟動(dòng)TIME-WAIT 套接字狀態(tài)的快速循環(huán)功能
sysctl =w net.ipv4.tcp_tw_recycle=1
關(guān)鍵字:Apache、服務(wù)器
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解