麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 網(wǎng)站 > Apache > 正文

Apache 并發(fā)優(yōu)化設(shè)置方法

2024-08-27 18:30:31
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Apache優(yōu)化步驟:

1、先查看apache的運(yùn)行模式,查看命令:

httpd -l

Compiled in modules:
           core.c
           prefork.c
           http_core.c
           mod_so.c
        這里可以看到運(yùn)行模式是prefork模式。

2、修改apache 的httpd.conf 配置

本文是對(duì)512M 內(nèi)存并裝有apache的vps進(jìn)行優(yōu)化,請(qǐng)不要跟我說(shuō)裝nginx就強(qiáng)多了,確實(shí)如此,但是你這樣說(shuō)的話,這篇文章就沒(méi)什么意義了,哈哈。那么進(jìn)入正題吧!

操作系統(tǒng)(linux):CentOS 5.5 32位(并不是我說(shuō)這個(gè)比較好,只是Cents我用得比較熟練)

    內(nèi)存:512M
    cpu:1G(1000MHz,vps實(shí)際有沒(méi)有這個(gè)數(shù),很難說(shuō))
    apache:2.2(建議低版本的,升級(jí)到高版本,畢竟舊版有很多問(wèn)題,且性能也是高版本好點(diǎn))

運(yùn)行的主要是PHP程序,其他的不多說(shuō)了,與本文關(guān)系不大。

首先,如題所說(shuō),本文所說(shuō)的優(yōu)化是針對(duì)apache 2.2以上版本,及使用perfork MPM模式的。perfork是apache在linux下默認(rèn)安裝下的模式,如果使用apache作為服務(wù)器的放在,還是使用perfork模式比較好,worker模式下對(duì)php某些功能并不支持。如果你使用的是win系統(tǒng)或都沒(méi)有使有和perfork,那么下面可以選擇不看或抱著學(xué)習(xí)的態(tài)度看看咯。

以下內(nèi)容均屬于博主自己的見解,實(shí)際測(cè)試請(qǐng)根據(jù)你的服務(wù)器,程序及其他因素按需處理。

一般情況下,我們需要優(yōu)化apache就是因?yàn)閍pache占用大量的內(nèi)存,導(dǎo)致vps當(dāng)機(jī),因?yàn)閜erfork是多進(jìn)程處理的,每個(gè)進(jìn)程都會(huì)點(diǎn)用一定的內(nèi)存數(shù)量。所以限制httpd進(jìn)程的數(shù)量,從而達(dá)到優(yōu)化apache的作用。影響單個(gè)httpd進(jìn)程的內(nèi)存大小,主要都是加載模塊,至少什么模塊是合適的,我也很難說(shuō),因?yàn)檫@個(gè)是按由你的需要而定的。網(wǎng)上有些人說(shuō),絕大部分都會(huì)用不上的模塊列出來(lái),我認(rèn)為這個(gè)是有很大的誤導(dǎo)作用,因?yàn)榻^大部分人中,也許你就是其中一個(gè)。將有用的模塊屏蔽掉,最壞的情況,就是重啟apache出錯(cuò),或部分功能無(wú)法使用。所以我也不會(huì)列出什么最少模塊加載方案什么的。所以,我只會(huì)說(shuō)出一些參考。

apache(perfork)下的模塊加載,并不是模塊加載列表,沒(méi)有的模塊并不是屏蔽掉了,只是我也不清楚它的實(shí)際作用。

(一)、對(duì)于apache2.2,模塊名有cache的一般都是有用的,因?yàn)橛胁簧俚倪@類模板都是2.1以上的apache才支持的,所以這類的模塊不會(huì)是無(wú)緣無(wú)緣而存在的。

(二)、很有可能或必用到的模塊有:

 

復(fù)制代碼 代碼如下:

LoadModule auth_basic_module modules/mod_auth_basic.so
  LoadModule authn_file_module modules/mod_authn_file.so
  LoadModule include_module modules/mod_include.so
  LoadModule log_config_module modules/mod_log_config.so
  LoadModule expires_module modules/mod_expires.so
  LoadModule deflate_module modules/mod_deflate.so
  LoadModule headers_module modules/mod_headers.so
  LoadModule setenvif_module modules/mod_setenvif.so
  LoadModule mime_module modules/mod_mime.so
  LoadModule autoindex_module modules/mod_autoindex.so
  LoadModule negotiation_module modules/mod_negotiation.so
  LoadModule dir_module modules/mod_dir.so
  LoadModule alias_module modules/mod_alias.so
  LoadModule rewrite_module modules/mod_rewrite.so

 

(三)、我粗略點(diǎn)了一下apache里面的模塊約在50+以,要從中選擇人人都適用的模塊加載列表是不可能的,至少cgi模塊我是不會(huì)用,但不排除你不會(huì)用。

模塊加載這一塊就說(shuō)到這里,這個(gè)大家多百度,多用自然會(huì)識(shí)別出一些有用模塊并漸漸屏蔽不使用的模塊。

接下來(lái),就是最為重要的perfork配置,也是困擾了我很久的問(wèn)題,盡管參數(shù)就那么6個(gè),那是卻足以讓你的vps當(dāng)機(jī)。先列出需要修改的參數(shù),修改位于httpd.conf的文件里面

 

復(fù)制代碼 代碼如下:

Timeout 30
KeepAlive On
MaxKeepAliveRequests 80
KeepAliveTimeout 15
<IfModule prefork.c>
ServerLimit 150
StartServers      5
MinSpareServers   5
MaxSpareServers   10
MaxClients       150
MaxRequestsPerChild 4000
</IfModule>

 

上面的代碼就是要修改的,實(shí)際上我們是要修改perfork里在的參數(shù),之所以將Timeout,KeepAlive等也寫出來(lái),是因?yàn)檫@個(gè)也是影響apache性能的。

Timeout是一個(gè)連接多少時(shí)間后斷開,這個(gè)參數(shù)設(shè)置在30-60是一般的php程序都是適用的,至少要運(yùn)行一些要占用大量時(shí)間的php程序,那么適當(dāng)調(diào)高也是可以的,但請(qǐng)不要太高,否則會(huì)影響apache性能,本次優(yōu)化我們使用30就很足夠了。

MaxKeepAliveRequests 是一個(gè)連接最大的請(qǐng)求量,對(duì)于頁(yè)面有較多的圖片等元素,可以適當(dāng)調(diào)高一點(diǎn),對(duì)于一般的網(wǎng)頁(yè)設(shè)置在80-120是足夠的,我們就設(shè)置為100,如果設(shè)置太高會(huì)導(dǎo)致httpd長(zhǎng)時(shí)間不能退出釋放內(nèi)存的。

KeepAliveTimeout 是當(dāng)用戶處理一次連接時(shí),如果在該參數(shù)的時(shí)間內(nèi)還有請(qǐng)求則會(huì)繼續(xù)執(zhí)行,不需要重新創(chuàng)建新的連接,直到達(dá)到MaxKeepAliveRequests的最大值才會(huì)退出。對(duì)于perfork模式下的,有人認(rèn)為是將KeepAlive Off會(huì)比較好,但是對(duì)于絕大多數(shù)的網(wǎng)站都會(huì)不多不少有些圖片元素,所以將該項(xiàng)打開,并將KeepTimeOut設(shè)置在2-5秒,不但有效提高服務(wù)器性能,也能加快頁(yè)面打開速度。

接下來(lái),就是正式進(jìn)入perfork的參數(shù)設(shè)置了,不想服務(wù)器運(yùn)行一會(huì)就內(nèi)存占滿的得看看哦。

首先是參數(shù)ServerLimit就是服務(wù)器最大支持同時(shí)連接的客戶端,該值將決定下面參數(shù)MaxClient可以設(shè)定的值的范圍。ServerLimit實(shí)際上只是起到一個(gè)限制的作用,并沒(méi)有實(shí)際有作用,也許有,我就不知道了。實(shí)際上起到作用的是,MaxClient參數(shù),但這個(gè)值又受ServerLimit的限制,等下會(huì)講。

另三個(gè)參數(shù)StartServers,MinSpareServers,MaxSpareServers,為什么將這三個(gè)參數(shù)一起說(shuō)呢,因?yàn)檫@三個(gè)數(shù)是聯(lián)系在一起的。這三個(gè)數(shù)都是決定空閑進(jìn)程數(shù)量,StartServers應(yīng)該范圍就是MinSpareServers和MaxSpareServers之間。否則,apache會(huì)自動(dòng)將該值還原到兩都之間,所以不要浪費(fèi)不必要的資源。按照perfork默認(rèn)的配置,這三個(gè)參數(shù)分別為:5,5,10。但是對(duì)于只有512M內(nèi)存的vps來(lái)說(shuō),我認(rèn)為還是有過(guò)大的負(fù)載。因此,我認(rèn)為在這里應(yīng)該退一步,將這三個(gè)參數(shù)設(shè)置為4,4,10,看起來(lái)和上面5,5,10并沒(méi)有什么不同,最大值還是10,但在實(shí)際使用中4,4,10釋放的內(nèi)存速度會(huì)明顯比5,5,10快很多。

接下來(lái)就是MaxClient最大支持多少客戶端在同一時(shí)間連接服務(wù)器,簡(jiǎn)單說(shuō)就是最大并發(fā)數(shù)支持,這個(gè)沒(méi)有特別需要說(shuō)的。對(duì)于512M的vps你也別想你的站能承受百萬(wàn)PV,使用默認(rèn)的150已是超出負(fù)載的了。一般將ServerLimit和MaxClient設(shè)為一樣值即可。

最后就是MaxRequestsPerChild參數(shù),一個(gè)進(jìn)程在處理多少次之后退出,設(shè)置為0則是無(wú)限次,也就是說(shuō)不會(huì)退出,那么httpd進(jìn)程也不會(huì)退出。那么,你就等著你的vps當(dāng)機(jī)重啟去吧。對(duì)于這個(gè)參數(shù),我粗略地搜索了一下,不少人推薦在1000次,也有100次的。據(jù)我的測(cè)試,對(duì)于內(nèi)存只有512M的vps來(lái)說(shuō),該值設(shè)置在500以上都會(huì)很快占滿內(nèi)存,但不至少于當(dāng)機(jī)。而觀察得知,一但內(nèi)存占滿,cpu的使用率幾乎變?yōu)?了。由此可知,當(dāng)機(jī)了那什么都干不了了,還不如消耗多一點(diǎn)cpu資源避免,提高穩(wěn)定性。所以,我最后的決定是將該值定義在30-40之間。這樣設(shè)定后,可以看出,內(nèi)存釋放速度得到很大的提升,但也可以看到cpu也在頻繁上下跳動(dòng)。這樣設(shè)置,即使內(nèi)存占滿,也能在最短時(shí)間恢復(fù)正常。

所以對(duì)于512MB的vps,apache(perfork模式)最后的優(yōu)方配置為:

 

復(fù)制代碼 代碼如下:

Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2
<IfModule prefork.c>
ServerLimit 150
StartServers      4
MinSpareServers   4
MaxSpareServers   10
MaxClients       150
MaxRequestsPerChild 40
</IfModule>

 

這樣,我們的配置基本完成,進(jìn)行負(fù)載測(cè)試即可。負(fù)載測(cè)試,我們使用ab測(cè)試,先聲明一點(diǎn),是用你本地的虛擬機(jī)去測(cè)試服務(wù)器上的一個(gè)靜態(tài)頁(yè)面,而不是在服務(wù)器上測(cè)試。之前,我就是這樣做,因?yàn)榫W(wǎng)速一樣,效果都是比較好的,但別人都是不同網(wǎng)速的,所以服務(wù)器上測(cè)試是不準(zhǔn)確的。

3、現(xiàn)在看看需要怎么優(yōu)化:
      連接數(shù)理論上是越大越好,但是得根據(jù)硬件,服務(wù)器的CPU,內(nèi)存,帶寬等因素,查看當(dāng)前的apache連接數(shù):
     

ps aux | grep httpd | wc -l

      計(jì)算httpd 占用內(nèi)存的平均數(shù):
     

ps aux | grep -v grep |awk '/httpd/{sum += $6;n++};END{print sum/n}'

      這個(gè)只是做個(gè)參考。計(jì)算后要減去服務(wù)器系統(tǒng)本身所需要的資源。
      比如內(nèi)存2G,減去500M留給服務(wù)器,還有1.5G,那么可得到最大連接數(shù):在8000左右。
      根據(jù)情況修改后的httpd.conf的prefork的配置后為:
   

復(fù)制代碼 代碼如下:

<IfModule prefork.c>
     StartServers          5
     MinSpareServers       5
     MaxSpareServers      10
     ServerLimit         5500
     MaxClients          5000
     MaxRequestsPerChild   100
</IfModule>

 

這里重點(diǎn)介紹下ServerLimit,必須放到MaxClients前,值要大于MaxClients。

4 重啟apache,再打開網(wǎng)站看看是否還會(huì)有慢的問(wèn)題了。

附注:可以使用以下命令找到httpd.conf文件

find / -name httpd.conf

 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日本爽快片100色毛片视频 | 国产精品九九久久一区hh | 在线日韩av电影 | 在线观看精品视频 | 7777在线视频免费播放 | 欧美 国产 综合 | 素人视频免费观看 | 俄罗斯hdxxx 日夜操天天干 | avav在线播放| 国产毛片自拍 | 成人污在线 | 午夜精品在线视频 | 久久综合网址 | 成人激情久久 | 久久久久久久久亚洲精品 | aaaaa国产欧美一区二区 | 99在线啪 | 1024亚洲天堂 | 毛片在线免费观看完整版 | a免费视频 | 国产羞羞视频在线观看 | 成人在线视频免费看 | www.成人在线 | 在线播放中文 | 欧美成人综合视频 | 久久九九热re6这里有精品 | 永久免费av在线 | 日韩毛片在线看 | 黄视频网站免费观看 | 在线免费91 | 欧美性视频一区二区 | 一级做a爰片性色毛片2021 | 黄视频网站免费在线观看 | 精品国产一区二区三区天美传媒 | 欧美一区二区三区久久精品视 | 免费1级做55爰片l在线观看 | 精品一区二区三区免费毛片爱 | 精品久久999 | 性毛片视频 | 成人一级在线 | 成人福利在线免费观看 |