<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux網(wǎng)站架構(gòu)系列之a(chǎn)pache----調(diào)優(yōu)篇

          Linux網(wǎng)站架構(gòu)系列之a(chǎn)pache----調(diào)優(yōu)篇

          作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò) 收藏

          安裝方法:在配置編譯的工程中,加入?yún)?shù)--with-mpm=worker,如果不加的話系統(tǒng)會(huì)采用默認(rèn)prefork模式。

          優(yōu)點(diǎn):內(nèi)存占用比prefork模式低,適合高并發(fā)高流量HTTP服務(wù)。

          缺點(diǎn):假如一個(gè)線程崩潰,整個(gè)進(jìn)程就會(huì)連同其任何線程一起“死掉”。由于線程共享內(nèi)存空間,所以一個(gè)程式在運(yùn)行時(shí)必須被系統(tǒng)識(shí)別為“每個(gè)線程都是安全的”。服務(wù)穩(wěn)定性不如prefork模式。

          配置參數(shù)說(shuō)明:

          StartServers 2 #最初建立的子進(jìn)程

          MaxClients 150 #所有子進(jìn)程中的線程總數(shù)。如果現(xiàn)有子進(jìn)程中的線程總數(shù)不能滿足負(fù)載,控制進(jìn)程將派生新的子進(jìn)程。

          MinSpareThreads 25 #最小空閑線程數(shù),如果空閑的線程小于設(shè)定值,apache會(huì)自動(dòng)建立線程,如果服務(wù)器負(fù)載大的話,可以考慮加大此參考值。

          MaxSpareThreads 75 #最大空閑線程數(shù),如果空閑的線程大于設(shè)定值,apache會(huì)自動(dòng)kill掉多余的線程,如果服務(wù)器負(fù)載大的話,可以考慮加大此參考值。

          ThreadsPerChild 25 #每個(gè)進(jìn)程包含固定的線程數(shù),此參數(shù)在worker模式中,是影響最大的參數(shù),ThreadsPerChild的最大缺省值是64,如果負(fù)載較大,64是不夠的。這時(shí)要顯式使用threadlimit指令,它的最大缺省值是20000.

          MaxRequestsPerChild 0 #功能同prefork模式

          常用配置參考:

          生產(chǎn)環(huán)境配置實(shí)例1:

          StartServers 3

          MaxClients 2000

          ServerLimit 25

          MinSpareThreads 50

          MaxSpareThreads 200

          ThreadLimit 200

          ThreadsPerChild 100

          MaxRequestsPerChild 0

          生產(chǎn)環(huán)境配置實(shí)例2:

          StartServers 5

          MaxClients 9600

          ServerLimit 64

          MinSpareThreads 25

          MaxSpareThreads 500

          ThreadLimit 200

          ThreadsPerChild 150

          MaxRequestsPerChild 0

          生產(chǎn)場(chǎng)景配置實(shí)例3:

          StartServers 2

          MaxClients 500

          ServerLimit 25

          MinSpareThreads 25

          MaxSpareThreads 75

          ThreadsPerChild 25

          MaxRequestsPerChild 0

          生產(chǎn)場(chǎng)景配置實(shí)例4:

          StartServers 3

          MaxClients 1600

          ServerLimit 25

          MinSpareThreads 50

          MaxSpareThreads 200

          ThreadLimit 200

          ThreadsPerChild 64

          worker模式下所能同時(shí)處理的請(qǐng)求總數(shù)是由子進(jìn)程總數(shù)乘以Threadsperchild值決定的,應(yīng)該大于等于maxclients。如果負(fù)載很大,現(xiàn)有的子進(jìn)程數(shù)不能滿足時(shí),控制進(jìn)程會(huì)派生新的子進(jìn)程。默認(rèn)最大的子進(jìn)程總數(shù)是16,如需加大時(shí)也需要顯示聲明serverlimit的值(最大值是20000)

          特別說(shuō)明:如果顯示聲明了ServerLimit,那么它乘以ThreadsPerChild的值必須大于等于MaxClients,而且MaxClients必須是ThreadsPerChild的整數(shù)倍,否則apache將會(huì)自動(dòng)調(diào)節(jié)到一個(gè)相應(yīng)值(可能是個(gè)非期望值)。

          數(shù)學(xué)表達(dá):

          MaxClient=總的進(jìn)程數(shù)(ServerLimit)x線程數(shù)(ThreadsPerChild)

          MaxClient%ThreadsPerChild=0

          生產(chǎn)環(huán)境中我們需要開(kāi)啟配置行,這樣才能實(shí)現(xiàn)并發(fā)鏈接數(shù)的增加。

          1、開(kāi)啟配置行

          這里我們要apache的主配置文件,找到包含的行,并解開(kāi)注釋

          [root@c64-web /]# grep ; /usr/local/apache/conf/

          #Include conf/extra/

          [root@c64-web /]# sed -i 's##Include conf/extra/; /usr/local/apache/conf/

          注意:編譯安裝的,只有此行解開(kāi)注釋了,后面的修改才能生效。

          2、修改配置

          1)如果你的apache服務(wù)為worker模式,那么生產(chǎn)環(huán)境中可以選擇上面worker模式的生產(chǎn)環(huán)境配置實(shí)例1的配置。

          2)如果你的apache服務(wù)為prefork模式,那么生產(chǎn)環(huán)境中可以參考上面prefork模式的生產(chǎn)環(huán)境配置實(shí)例1的配置。

          生產(chǎn)環(huán)境中,這里我建議大家選擇worker模式。

          十、開(kāi)啟防盜鏈

          一些小網(wǎng)站為了盈利,通過(guò)盜鏈來(lái)實(shí)現(xiàn)對(duì)自己網(wǎng)站內(nèi)容的豐富,這無(wú)疑加大了企業(yè)的空間和流量的成本,因此我們需要對(duì)apache進(jìn)行防盜鏈的配置。

          由于我們要用到mod_rewrite模塊,因此我們需要先檢測(cè)該模塊是否安裝,檢測(cè)和安裝方法與上面mod_deflate和mod_expires的一樣,這里不多講了。

          防盜鏈配置:

          一般我們都是將防盜鏈的配置,配置在虛擬主機(jī)里面,配置如下:

          ServerAdmin

          DocumentRoot /www/html

          ServerName www.sunsky.pw

          ServerAlias sunsky.pw

          CustomLog |/usr/local/sbin/cronolog /app/logs/www_access_%Y%m%d.log combined

          ErrorLog |/usr/local/sbin/cronolog /app/logs/www_error_%Y%m%d.log

          RewriteEngine On

          RewriteCond %{HTTP_REFERER} !^*$ [NC]

          RewriteCond %{HTTP_REFERER} !^$ [NC]

          RewriteCond %{HTTP_REFERER} !^>

          AllowOverride None

          Options FollowSymLinks #不填寫(xiě)Indexes項(xiàng),默認(rèn)即為關(guān)閉。

          Require all granted

          第二種:

          AllowOverride None

          Options -Indexes #通過(guò)在Indexes前面加-來(lái)禁用此功能

          Require all granted

          第三種:

          AllowOverride None

          Options None #禁用所有選項(xiàng)

          Require all granted

          十二、禁用AllowOverride選項(xiàng),關(guān)閉.htaccess文件使用

          首先是性能考慮,如果AllowOverride啟用了.htaccess文件,則apache需要在每個(gè)目錄中查找.htaccess文件。因此,無(wú)論是否真正用到,啟用.htaccess都會(huì)導(dǎo)致服務(wù)器性能的下降。另外,對(duì)于每一個(gè)請(qǐng)求,都需要讀取一次.htaccess文件。



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();