日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

Apache服務(wù)器優(yōu)化_Web服務(wù)器教程

編輯Tag賺U幣
這個(gè)一些個(gè)人的總結(jié),加上一些前輩的經(jīng)驗(yàn), 下面的優(yōu)化總的來(lái)講,在我使用的一年多中,還是相當(dāng)有用的,優(yōu)化和不優(yōu)化還是比較明顯的.

  下面開始正題

  目標(biāo)

  調(diào)優(yōu) Apache 之類服務(wù)器要達(dá)到的目標(biāo)是什么?什么來(lái)量化這個(gè)調(diào)的指標(biāo)。答案就是 QPS.

  QPS = req/sec = 請(qǐng)求數(shù)/秒

  就是每秒能處理多少請(qǐng)求數(shù)。我們平時(shí)老講并發(fā),并發(fā)不但指保持的連接數(shù),還有處理了多少請(qǐng)求。所以這個(gè)是很關(guān)鍵的。

  這個(gè)還會(huì)影響到什么啦,就是 PV ,基本上可以簡(jiǎn)單換算,每天總PV = QPS * 3600 * 8 ,就是算一天 8 個(gè)小時(shí)的樣子。

  峰值QPS

  每天80%的訪問(wèn)集中在20%的時(shí)間里,這20%時(shí)間叫做峰值時(shí)間,如果有比較好的監(jiān)控和信息收集系統(tǒng)。最好能用信息收集系統(tǒng)來(lái)處理和收集這些信息,然后量化來(lái)處理。

  實(shí)際峰值流量為一天中流量最高的 5 分鐘的流量

  請(qǐng)求量的峰值為一天中請(qǐng)求量最高的 5 分鐘的請(qǐng)求數(shù)。

  可以這樣來(lái)計(jì)算下面的內(nèi)容,不過(guò)我們還是簡(jiǎn)單的使用 8/2 的分法來(lái)決定吧。

  公式:

  ( 總PV數(shù) * 80% ) / ( 每天秒數(shù) * 20% ) = 峰值時(shí)間每秒請(qǐng)求數(shù)(QPS)

  機(jī)器:

  峰值時(shí)間每秒QPS / 單臺(tái)機(jī)器的QPS   = 需要的機(jī)器

  ExtendedStatus On 因?yàn)閷懭腩~外的時(shí)間標(biāo)志,設(shè)off。

  MPM:worker-多進(jìn)程多線程新型設(shè)計(jì),適合高流量服務(wù),但是不穩(wěn)定,對(duì)象php之類支持非常差,不推薦, prefork-穩(wěn)定,無(wú)線程,占用較多內(nèi)存。

  HostnameLookups off 關(guān)掉,這樣少一dns查詢,日志處理可以另外用軟件。

  注釋LoadMoule指令中不要的模塊。

  一般說(shuō)來(lái),不需要的模塊包括:

  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ì)有安全性問(wèn)題.

  Includes  允許服務(wù)器端包含。服務(wù)器端包含允許一個(gè) HTML 文件包含其他文件。這個(gè)平時(shí)用不到,他要檢查每個(gè)html所以不要開啟.

  IncludesNOEXEC  允許服務(wù)器端包含,但 CGI 腳本中的 #exec 和 #include 指令無(wú)效。不常用,關(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 來(lái)關(guān)掉它。 用一個(gè)破折號(hào)引導(dǎo),從而禁用此指令。

  AllowOverride   這個(gè)選項(xiàng),是開啟如包括htaccess來(lái)進(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來(lái)關(guān)掉,當(dāng)然,這樣做靜態(tài)化就只能寫在VH的配置中了,禁用后設(shè)置文件僅在服務(wù)器啟動(dòng)時(shí)解析一次 。

  DirectoryIndex index*,不要使用通配符,全用完整列表,如:DirectoryIndex 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è)單盤來(lái)管理日志存儲(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í)間,最簡(jiǎn)單的方法就是使用mod_cache緩存模塊。你可以使用mod_disk_cache和mod_mem_cache來(lái)分別提供基于磁盤的緩存和基于內(nèi)存的緩存。

  優(yōu)化動(dòng)態(tài)內(nèi)容

  動(dòng)態(tài)內(nèi)容可能是所有WEB服務(wù)器中最消費(fèi)時(shí)間的部分,特別是使用CGI的時(shí)候,一個(gè)簡(jiǎn)單的程序都可能會(huì)把響應(yīng)時(shí)間增加好幾秒。

  使用基于腳本的方案的一大好處是它們?cè)贏pache里裝入了解釋器,這就減少了執(zhí)行時(shí)再裝入解釋器的時(shí)間,一些方案還把解析過(guò)的腳本緩存起來(lái),這樣下一次遇到同樣的請(qǐng)求就可以直接執(zhí)行而無(wú)需再次解析。當(dāng)然也可以應(yīng)用的服務(wù)分離,象使用php的fastcgi來(lái)在后面跑,前面給Web服務(wù)器.

  對(duì)特定系統(tǒng)的調(diào)整優(yōu)化很復(fù)雜而且很花時(shí)間,而且你需要調(diào)整特定的腳本以利用優(yōu)化的成果。

  不過(guò)對(duì)動(dòng)態(tài)內(nèi)容的優(yōu)化效果是非常明顯的,僅僅是把perl腳本的執(zhí)行模式從CGI轉(zhuǎn)到mod_perl就可以減少多達(dá)70%的執(zhí)行時(shí)間,如果我們進(jìn)一步,還可以使用到數(shù)據(jù)庫(kù)的持久連接或在多次請(qǐng)求之間緩存信息,這對(duì)電子商務(wù)網(wǎng)站非常有用,它也減小了不同請(qǐng)求間重復(fù)裝載信息的開銷。

  總的來(lái)講,網(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ì)指定的頁(yè)面請(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-javascript 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

  其實(shí)還有一個(gè)壓縮,我就不寫了,見我另外的那個(gè)文章<<Gzip在apache2中的設(shè)置和squid對(duì)它的處理>>

  http://www.php-oa.com/2008/08/20/gzipsquid.html  壓縮比率可以高到70%,非常有用的.

  另外高速的web服務(wù),就可以把noatime參數(shù)加入/etc/fstab文件中

  lnux文件系統(tǒng)當(dāng)文件被訪問(wèn),創(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)訪問(wè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è)好象誰(shuí)都明白),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

來(lái)源:網(wǎng)絡(luò)搜集//所屬分類:Web服務(wù)器教程/更新時(shí)間:2011-12-08
相關(guān)Web服務(wù)器教程