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

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

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

  下面開始正題

  目標(biāo)

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

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

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

  這個還會影響到什么啦,就是 PV ,基本上可以簡單換算,每天總PV = QPS * 3600 * 8 ,就是算一天 8 個小時的樣子。

  峰值QPS

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

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

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

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

  公式:

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

  機(jī)器:

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

  ExtendedStatus On 因為寫入額外的時間標(biāo)志,設(shè)off。

  MPM:worker-多進(jìn)程多線程新型設(shè)計,適合高流量服務(wù),但是不穩(wěn)定,對象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é)的部分用不到的,有大俠指點一下還有那些可以不要….

  文件夾Directory的選項的優(yōu)化

  Options Indexes Includes FollowSymLinks ExecCGI

  AllowOverride None

  ExecCGI 允許執(zhí)行 CGI 腳本。如果該選項沒有設(shè)置,則 CGI 腳本將不能執(zhí)行。如果沒有必要最好不要開啟,有可能會有安全性問題.

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

  IncludesNOEXEC  允許服務(wù)器端包含,但 CGI 腳本中的 #exec 和 #include 指令無效。不常用,關(guān)掉

  Indexes   如果 DirectoryIndex (如 index.html) 在請求的目錄沒存在的話,按一定方式顯示目錄內(nèi)容列表.這個用的太多了,開啟吧.

  FollowSymLinks 最好關(guān)掉符號連接,Apache就必須執(zhí)行額外的系統(tǒng)調(diào)用以驗證符號連接。文件名的每一個組成部分都需要一個額外的調(diào)用.當(dāng)打開這個選項時,Apache將檢查每個請求中是否包含對符號連接的引用,這將對請求中包含的每個路徑調(diào)用一次lstat()系統(tǒng)調(diào)用。在請求"/index.html"時,Apache將對"/www"、"/www/htdocs"、"/www/htdocs/index.html"執(zhí)行l(wèi)stat()調(diào)用。而且lstat()的執(zhí)行結(jié)果不被緩存,因此對每一個請求都要執(zhí)行一次。除非你準(zhǔn)備使用符號連接,否則用 Options -FollowSymLinks 來關(guān)掉它。 用一個破折號引導(dǎo),從而禁用此指令。

  AllowOverride   這個選項,是開啟如包括htaccess來進(jìn)行權(quán)限控制,Apache必需首先在當(dāng)前目錄中查找是否存在這個文件,如果存在就解析這個文件并在當(dāng)前目錄中應(yīng)用文件中的設(shè)置。更壞的是,Apache不僅要查看當(dāng)前的目錄,還要查看當(dāng)前目錄的所有上層目錄是否包括htaccess文件以根據(jù)所有這些文件最終確定設(shè)置。例如請求"/index.html",則Apache會試圖打開"/.htaccess"、"/www/.htaccess"、"/www/htdocs/.htaccess"。其解決方法 AllowOverride None來關(guān)掉,當(dāng)然,這樣做靜態(tài)化就只能寫在VH的配置中了,禁用后設(shè)置文件僅在服務(wù)器啟動時解析一次 。

  DirectoryIndex index*,不要使用通配符,全用完整列表,如:DirectoryIndex index.cgi index.pl index.shtml index.html。當(dāng)然,最少好些,明確的指定設(shè)置文件列表,放在最前最合理。

  啟用了持久鏈接Keepalive,這樣子進(jìn)程將保持忙碌狀態(tài)以等待被打開連接上的新請求。如果開啟KeepAliveTimeout的默認(rèn)值被設(shè)置為5秒。最好不要大于60秒。

  禁用日志

  寫入日志信息是一個很花費時間的工作,盡管Apache保持日志文件的打開狀態(tài)以節(jié)省打開文件的時間,但仍然得花費不少的時間。如果沒有必要存儲日志信息,你可以關(guān)閉這個選項以節(jié)省出更多的處理器時間,只需要在設(shè)置文件中把日志那一行注釋掉就可以關(guān)掉它。當(dāng)然,實在需要,最要加入另一個單盤來管理日志存儲.

  靜態(tài)內(nèi)容方面

  如果你的WEB服務(wù)器使用了大量靜態(tài)內(nèi)容或者你分別用兩個WEB服務(wù)器處理動態(tài)和靜態(tài)內(nèi)容,那么你現(xiàn)在的主要目標(biāo)就是縮短服務(wù)器發(fā)送被請求內(nèi)容的響應(yīng)時間,最簡單的方法就是使用mod_cache緩存模塊。你可以使用mod_disk_cache和mod_mem_cache來分別提供基于磁盤的緩存和基于內(nèi)存的緩存。

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

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

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

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

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

  總的來講,網(wǎng)站的動態(tài)內(nèi)容腳本和CGI是影響網(wǎng)站性能的最重要方面(所以好的程序員很重要),如果你管理一個典型的Apache服務(wù)器你會發(fā)現(xiàn)Apache響應(yīng)一個傳入連接以及最后把內(nèi)容發(fā)送給客戶的所花費的時間是以毫秒記的,而等待所需數(shù)據(jù)資源的時間常常達(dá)到幾秒鐘。

  其它優(yōu)化

  可以把 Apache(httpd)的優(yōu)先級改為 -15,這已經(jīng)接近上限(優(yōu)先級從最高的 -20 到最低的 19)。可以從命令行使用這兩個實用程序:

  * 要想停止現(xiàn)有服務(wù)并以優(yōu)先級 -15 重新啟動它,可以發(fā)出命令 nice -15 httpd

  * 要想避免停止服務(wù),可以發(fā)出命令 renice -15 -p 1996

  這里的差異是 renice 需要進(jìn)程 ID(或 pid)。如上所述,可以使用 top 查明 pid。nice 和 renice 是很靈活的程序

  配置mod_expires模塊(這個非常有用的優(yōu)化哦)

  mod_expires可以減少20-30%左右的重復(fù)請求,讓重復(fù)的用戶對指定的頁面請求結(jié)果都CACHE在本地,根本不向服務(wù)器發(fā)出請求。除開用戶有發(fā)送no-cache才會更新,但要注意更新快的文件不要這么做.

  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

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

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

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

  lnux文件系統(tǒng)當(dāng)文件被訪問,創(chuàng)建,更新的時候會保留紀(jì)錄。默認(rèn)的,當(dāng)文件讀寫操作的時候,系統(tǒng)會更新last-time-read屬性。因為寫操作是比較耗費資源的操作,減少不必要的i/o可以整體上提高磁盤性能。

  在掛接文件系統(tǒng)的時候,加入noatime參數(shù)可以禁止inode節(jié)點訪問時間的修改。如果文件更新時間對于特定的應(yīng)用不是很重要的話,比如web服務(wù),就可以把noatime參數(shù)加入/etc/fstab文件中

  比如:

  /dev/sdb1 /mountlocation ext3 defaults,noatime 1 2

  推薦利用單獨的分區(qū)作為掛接點并打開noatime開關(guān)

  也可以關(guān)掉的服務(wù)(這個好象誰都明白),apmd,autofs,cups,hpoj.isdn,pcmcia,rhnsd,sendmail,xfs(字體服務(wù))

  打開重用TCP/IP中的time-wait套接

  sysctl -w net.ipv4.tcp_tw_reuse=1

  啟動TIME-WAIT 套接字狀態(tài)的快速循環(huán)功能

  sysctl =w net.ipv4.tcp_tw_recycle=1

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