欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:LAMP之a(chǎn)pache調(diào)優(yōu)

柚子快報(bào)邀請(qǐng)碼778899分享:LAMP之a(chǎn)pache調(diào)優(yōu)

http://yzkb.51969.com/

先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動(dòng)等大廠,目前阿里P7

深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!

因此收集整理了一份《2024年最新軟件測試全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友。

既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,涵蓋了95%以上軟件測試知識(shí)點(diǎn),真正體系化!

由于文件比較多,這里只是將部分目錄截圖出來,全套包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、大綱路線、講解視頻,并且后續(xù)會(huì)持續(xù)更新

如果你需要這些資料,可以添加V獲?。簐ip1024b (備注軟件測試)

正文

63 ~]# curl -I http://192.168.1.63/ HTTP/1.1 200 OK Date: Sat, 29 Aug 2015 09:55:31 GMT Server: web Last-Modified: Sat, 29 Aug 2015 09:37:36 GMT ETag: “6d086-3a-51e6ff35dba19” Accept-Ranges: bytes Content-Length: 58 Content-Type: text/html

15.1.5 查看運(yùn)行apache的默認(rèn)用戶

我們通過更改apache的默認(rèn)用戶,可以提升apache的安全性。這樣,即使apache服務(wù)被攻破,黑客拿到apache普通用戶也不會(huì)對(duì)系統(tǒng)和其他應(yīng)用造成破壞。這里創(chuàng)建的apache用戶,將用于對(duì)子進(jìn)程和線程的控制。 注:默認(rèn)使用daemon用戶是安全的。

63 ~]# ps -axu | grep httpd 63 ~]# id daemon uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp) 63 ~]# grep daemon /etc/passwd daemon?2:2:daemon:/sbin:/sbin/nologin

63 ~]# useradd -M -s /sbin/nologin apache

-M:不要自動(dòng)建立用戶的登入目錄。 編輯apache配置文件,修改默認(rèn)的用戶。

64-web /]# vim /etc/httpd/httpd.conf 161 User daemon 162 Group daemon 為: User apache Group apache

63 httpd-2.4.10]# lsof -i :80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 54066 root 4u IPv6 64673 0t0 TCP *:http (LISTEN) httpd 54083 apache 4u IPv6 64673 0t0 TCP *:http (LISTEN) httpd 54084 apache 4u IPv6 64673 0t0 TCP *:http (LISTEN) httpd 54085 apache 4u IPv6 64673 0t0 TCP *:http (LISTEN)

15.1.6 apache目錄及文件權(quán)限設(shè)置, 不能給777權(quán)限

在生產(chǎn)環(huán)境的網(wǎng)站架構(gòu)中,我們應(yīng)把資源文件的權(quán)限做好配置。 例:用戶上傳的圖片及附件等和程序做好分離。這樣才能更方便我們做好授權(quán),保證apache服務(wù)和整個(gè)服務(wù)器安全。

這里我們?cè)O(shè)置apache的網(wǎng)站目錄屬主和屬組是daemon:

[root@xuegod63 ~]# ll -sd /usr/local/apache/htdocs/ 0 drwxr-xr-x 2 root root 24 1月 25 15:53 /usr/local/apache/htdocs/ [root@xuegod63 ~]# chown daemon. /usr/local/apache/htdocs/ -R [root@xuegod63 ~]# ll -sd /usr/local/apache/htdocs/ 0 drwxr-xr-x 2 daemon daemon 24 1月 25 15:53 /usr/local/apache/htdocs/

15.1.7 保護(hù)apache日志:設(shè)置好apache日志文件權(quán)限

對(duì)日志的授權(quán),我們要將屬主和屬組都設(shè)置為root:

[root@xuegod63 ~]# ll -sd /usr/local/apache/logs/ 0 drwxr-xr-x 2 root root 58 1月 25 17:29 /usr/local/apache/logs/ [root@xuegod63 ~]# ll /usr/local/apache/logs/ 總用量 16 -rw-r–r-- 1 root root 912 1月 25 17:29 access_log -rw-r–r-- 1 root root 6648 1月 25 17:29 error_log -rw-r–r-- 1 root root 7 1月 25 17:29 httpd.pid

注:由于apache日志的記錄是由apache的主進(jìn)程進(jìn)行操作的,而apache的主進(jìn)程又是root用戶啟動(dòng)的,所以這樣不影響日志的輸出。這也是日志記錄的最安全的方法。

15.2 設(shè)置錯(cuò)誤頁面-開啟壓縮和緩存功能

15.2.1 錯(cuò)誤頁面優(yōu)雅顯示 為了提升網(wǎng)站的用戶體驗(yàn),避免404,403之類的丑陋的默認(rèn)錯(cuò)誤提示出現(xiàn)。我們需要對(duì)錯(cuò)誤頁面進(jìn)行優(yōu)化,讓他們變的漂亮一點(diǎn)。錯(cuò)誤頁面不僅在于告訴用戶訪問出現(xiàn)了問題,而且需要引導(dǎo)用戶到正確的頁面。 錯(cuò)誤頁面優(yōu)雅化顯示的實(shí)現(xiàn)方式主要有兩種,下面我們主要以404錯(cuò)誤為例: 方法:

63 ~]# vim /etc/httpd/httpd.conf #在根目錄的標(biāo)簽中添加以下紅色標(biāo)記內(nèi)容。 217 。。。 243 ErrorDocument 404 /404.html 244

注:#將404錯(cuò)誤跳轉(zhuǎn)到/usr/local/apache/htdocs下的404.html頁面上

創(chuàng)建404測試頁:

63 ~]# echo “404 go to home” > /usr/local/apache/htdocs/404.html

重啟:

63 ~]#systemctl restart httpd

總結(jié):ErrorDocument的命令格式如下: ErrorDocument 錯(cuò)誤代碼 跳轉(zhuǎn)到的頁面或文件 另外這里需要注意,你若設(shè)置跳轉(zhuǎn)到文件,必須要有這個(gè)文件才行。另外文件必須在站點(diǎn)目錄內(nèi),不然會(huì)報(bào)錯(cuò)。 在跳轉(zhuǎn)到文件的測試中,我用全路徑和別名路徑進(jìn)行測試,當(dāng)把404錯(cuò)誤頁面跳轉(zhuǎn)文件放到其他目錄的時(shí)候,不報(bào)錯(cuò),但是頁面跳轉(zhuǎn)不過去。

15.2.2 啟用壓縮模塊mod_deflate

網(wǎng)站隨著用戶訪問量的增加和內(nèi)容量的增加,網(wǎng)站的帶寬會(huì)不斷的增加,隨之就是網(wǎng)站成本的增加。并且當(dāng)內(nèi)容量增大的時(shí)候,客戶端如果帶寬小,就會(huì)影響用戶的體驗(yàn)。因此從這兩方面考慮,網(wǎng)站的某些內(nèi)容必須經(jīng)過壓縮之后再傳給用戶,然后在用戶客戶端進(jìn)行解壓,來實(shí)現(xiàn)雙方共贏的效果。

apache的壓縮要用到mod_deflate模塊,該模塊提供了DEFLATE輸出過濾器,允許服務(wù)器在將輸出內(nèi)容發(fā)送到客戶端以前進(jìn)行壓縮,以節(jié)約帶寬。它的核心思想就是把文件先在服務(wù)器進(jìn)行壓縮,然后再進(jìn)行傳輸,這樣可以顯著減少文件傳輸?shù)拇笮?。?dāng)傳輸完畢后,客戶端瀏覽器會(huì)重新對(duì)壓縮過的內(nèi)容進(jìn)行解壓縮。如果沒特殊情況的話,所有的文本內(nèi)容都應(yīng)該能被gzip壓縮,例如:html(php),js,css,xml,txt等。

1、mod_deflate模塊檢查及安裝 檢查:

63 httpd-2.4.10]# /usr/local/apache/bin/apachectl -M | grep deflate Syntax OK #出現(xiàn)這個(gè)說明沒有安裝?;驔]任何輸出,也是說明沒有安裝 如果安裝了,將彈出以下內(nèi)容: 63 src]# /usr/local/apache/bin/apachectl -M | grep deflate deflate_module (static) #彈出此種結(jié)果,則為編譯安裝時(shí)裝的

63 src]# /usr/local/apache/bin/apachectl -M | grep deflate deflate_module (shared) #彈出此種結(jié)果,則為DSO方式安裝的

安裝了的話,就可以直接進(jìn)行壓縮配置了,如果沒有安裝,下面為安裝方法 a)編譯時(shí)安裝方法 編譯的時(shí)候跟上–enable-deflate即可實(shí)現(xiàn)安裝 b)DSO方式安裝。 擴(kuò)展:DSO: Dynamic shared object動(dòng)態(tài)共享對(duì)象 。DSO模塊可以在編譯服務(wù)器之后編譯,也可以用Apache擴(kuò)展工具(apxs)編譯并增加 使用DSO方式安裝,/usr/local/apache/bin/apxs后跟的參數(shù)詳解 -c 此選項(xiàng)表明需要執(zhí)行編譯操作。 -i 此選項(xiàng)表示需要執(zhí)行安裝操作,以安裝一個(gè)或多個(gè)動(dòng)態(tài)共享對(duì)象到服務(wù)器的modules目錄。 -a 此選項(xiàng)自動(dòng)增加一個(gè)LoadModule行到httpd.conf文件中,以激活此模塊,或者,如果此行已經(jīng)存在,則啟用之。

63 filters]#cd /usr/src/httpd-2.4.10/modules/filters #切到apache源碼包mod_deflate所在的目錄下

63 filters]# /usr/local/apache/bin/apxs -c -i -a /usr/src/httpd-2.4.10/modules/filters/mod_deflate.c #以dso的方式編譯安裝到apache中 63 filters]# ll /usr/local/apache/modules/mod_deflate.so -rwxr-xr-x 1 root root 61912 Aug 31 09:05 /usr/local/apache2.2-xuegod/modules/mod_deflate.so #檢查mod_deflate是否安裝,成功安裝這里會(huì)顯示出該文件

15.2.4 壓縮模塊配置

1、配置壓縮參數(shù)

63 ~]# vim /etc/httpd/httpd.conf #確認(rèn)下面這一行是打開的。默認(rèn)是打開的。 103 LoadModule deflate_module modules/mod_deflate.so #此行解鎖后再進(jìn)行下面操作,不然下面的操作會(huì)報(bào)錯(cuò)。

63 ~]# vim /etc/httpd/httpd.conf #在以下內(nèi)容后,插入: 57 58

注釋:

注:一般壓縮等級(jí)使用6或8

SetOutputFilter DEFLATE #啟用壓縮 DeflateFilterNote Input instream #聲明輸入流的byte數(shù)量 DeflateFilterNote Output outstream #聲明輸出流的byte數(shù)量 DeflateFilterNote Ratio ratio #聲明壓縮的百分比 AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript #僅壓縮,限制特定的MIME類型文件

注: 1、如果是虛擬主機(jī),需要在中添加配置即可實(shí)現(xiàn)壓縮 2、圖片和視頻本身就是壓縮格式,一般不需要壓縮的。有些小圖片和視頻壓縮后還會(huì)變大。

總結(jié):我們?cè)谄髽I(yè)生產(chǎn)環(huán)境中時(shí),在啟用mod_deflate時(shí),一定要注意,對(duì)于太小的文件和某些格式的圖片不要對(duì)它們進(jìn)行壓縮,有可能越壓越大。 擴(kuò)展:AddOutputFilterByTypeDEFLATE后跟的所有的壓縮文件類型,后期可以參照選擇。 text/plain text/html text/php text/xml text/css text/javascript application/xhtml+xml application/xml application/rss+xml application/atom_xml application/x-javascript application/x-httpd-php image/svg+xml image/gif image/png image/jpe image/swf image/jpeg image/bmp

15.2.5 mod_expires: 設(shè)置網(wǎng)頁緩存時(shí)間

雖然我們上面通過mod_deflate模塊啟用了壓縮,從很大程度上節(jié)約了企業(yè)帶寬,降低了企業(yè)成本??墒怯捎诂F(xiàn)在越來越多的圖片、腳本、css和flash被嵌入到頁面中,當(dāng)客戶訪問站點(diǎn)勢必會(huì)做很多次的http請(qǐng)求,因此我們還可以通過mod_expires緩存模塊來設(shè)置ExpiresHeader來緩存這些文件。 Expires是通過header報(bào)文來指定特定類型的文件在游覽器中的緩存時(shí)間的。平時(shí),我們大多數(shù)的圖片,flash在發(fā)布之后都是不需要經(jīng)常修改的,因此做了緩存之后,游覽器第一次從服務(wù)器下載之后,就不需要再從服務(wù)器下載這些文件而是直接從游覽器緩存中讀取了。這樣客戶訪問頁面的速度就會(huì)大大加快,企業(yè)的帶寬壓力也得到了緩解。 15.2.6 mod_expires模塊檢查及安裝 檢查mod_expires模塊是否安裝的方法如下:

63 ~]# /usr/local/apache/bin/apachectl -M |grep expires expires_module (static) #此種結(jié)果為編譯安裝時(shí)裝的 63 ~]# /usr/local/apache/bin/apachectl -M |grep expires expires_module (shared) #此種結(jié)果為DSO方式安裝的

安裝了的話,就可以直接進(jìn)行緩存配置了,如果沒有安裝,下面為安裝方法 a)編譯方式安裝 編譯的時(shí)候跟上–enable-expires即可實(shí)現(xiàn)安裝 b)DSO方式安裝

63 ~]# cd /usr/src/httpd-2.4.10/modules/metadata/ #切到apache源碼包mod_expires所在的目錄下 63 metadata]# ls mod_expires.c mod_expires.c

以dso的方式編譯安裝到apache中

63 metadata]# /usr/local/apache/bin/apxs -c -i -a /usr/src/httpd-2.4.10/modules/metadata/mod_expires.c

注意如果我們是編譯安裝時(shí)已經(jīng)編譯進(jìn)去的,要先解鎖以下行,再進(jìn)行下面操作,不然會(huì)報(bào)錯(cuò)。

63 ~]# vim /etc/httpd/conf/httpd.conf #確認(rèn)這一行是開啟的。 118 LoadModule expires_module modules/mod_expires.so

存的用法有3種,分別問對(duì)全局,對(duì)目錄,對(duì)虛擬主機(jī)。 1、對(duì)全局 對(duì)全局的配置就是在apache主配置文件httpd.conf的末尾加入如下參數(shù)即可

63 ~]# vim /etc/httpd/httpd.conf #在最后添加以下內(nèi)容:

重啟服務(wù):

63 ~]# systemctl restart httpd

2、對(duì)目錄 對(duì)目錄的配置就是在apache主配置文件中標(biāo)簽內(nèi),最后加入如下參數(shù)即可

63 ~]# vim /usr/local/apache2.2-xuegod/conf/httpd.conf 133

c)對(duì)虛擬主機(jī) 對(duì)虛擬主機(jī)的配置就是在apache的虛擬主機(jī)配置文件httpd-vhost.conf中添加如下參數(shù)即可

63 ~]# vim /etc/httpd/httpd.conf 修改: 216 DocumentRoot “/usr/local/apache/htdocs” 改為:

DocumentRoot “/usr/local/apache/htdocs”

修改: 467 # Include /etc/httpd/extra/httpd-vhosts.conf 改為: Include /etc/httpd/extra/httpd-vhosts.conf

63 ~]# vim /etc/httpd/extra/httpd-vhosts.conf ServerAdmin 888@qq.com DocumentRoot “/www/html” ServerName www.xuegod.cn ServerAlias xuegod.cn ErrorLog “l(fā)ogs/dummy-host.example.com-error_log” CustomLog “l(fā)ogs/dummy-host.example.com-access_log” common Options None Require all granted

63 ~]# mkdir -pv /www/html 63 ~]# echo “xuegod.cn”> /www/html/index.html

以上三種配置任何一種配置之后,對(duì)apache服務(wù)器進(jìn)行優(yōu)化重啟,然后用火狐或者google游覽器的 測試: 在瀏覽器中訪問192.168.1.63,按下f12,點(diǎn)擊network,再次刷新站點(diǎn) 由以上測試可見,緩存為1年

15.2.7 擴(kuò)展:expires模塊的語法

expires模塊用到了ExpiresDefault和EXpiresByType兩個(gè)指令,下面是這兩個(gè)指令的語法。 ExpiresDefault “ [plus] {}*” EXpiresByType type/encoding " [plus] {}" 其中的參數(shù)有3個(gè):access,now(等價(jià)于‘a(chǎn)ccess’),modification modification [?m?d?f??ke??n] 改性,修正 plus關(guān)鍵字是可選的。 plus [pl?s] 加上 必須是整數(shù),確??梢詀toi()所接收。(atoi可以把字符串轉(zhuǎn)換成長整型數(shù)) 參數(shù)類型:years,months,weeks,days,hours,minutes,seconds

例如:下面3個(gè)指令都表示文檔默認(rèn)的有效期是一個(gè)月

ExpiresDefault “access plus 1 month” ExpiresDefault “access plus 4 weeks” ExpiresDefault “access plus 30 days”

有效期可以通過增加“”子句進(jìn)一步調(diào)整

ExpiresByType text/html “access plus 1 month 15 days 2 hours” ExpiresByType image/gif “modification plus 5 hours 3 minutes”

緩存優(yōu)化對(duì)企業(yè)來說是至關(guān)重要了的,不同的業(yè)務(wù)類型,對(duì)于緩存的類型和時(shí)間又各不相同,大家具體可以用YSlow對(duì)淘寶,京東,新浪,谷歌等站點(diǎn)進(jìn)行測試,看看他們的緩存時(shí)間是多少,并思考下為什么那樣設(shè)置。

查看天貓緩存時(shí)間: 注:天貓解決被緩存文件及時(shí)更新的方法:對(duì)緩存的對(duì)象改名 雖然緩存的設(shè)置有如下優(yōu)點(diǎn) 1.縮短服務(wù)的響應(yīng)時(shí)間 2.減輕服務(wù)器負(fù)擔(dān) 3.減少網(wǎng)絡(luò)帶寬使用量,降低企業(yè)成本 但是他的缺點(diǎn)也是顯而易見的,由于使用了緩存設(shè)置,導(dǎo)致被緩存的內(nèi)容更新了,但是客戶看到的卻還是舊的。 如何解決被緩存文件及時(shí)更新這個(gè)問題呢? 第一種:縮短緩存時(shí)間例如:1天,不徹底犧牲性能 第二種:對(duì)緩存的對(duì)象改名。

15.3 開啟長連接功能

15.3.1 apache的keepalive和keepalivetimeout 。打開長鏈接 KeepAlive Off/On 保持連接,會(huì)減少三次握手,但是會(huì)消耗內(nèi)存,是否打開,取決于單位時(shí)間內(nèi)是否進(jìn)行多次連接(三次握手),一個(gè)連接有多次請(qǐng)求的,建議打開,并適當(dāng)調(diào)整KeepAliveTimeout時(shí)間

在APACHE的httpd.conf中,KeepAlive指的是保持連接活躍,如果將KeepAlive設(shè)置為On,那么來自同一客戶端的請(qǐng)求就不需要再一次連接,避免每次請(qǐng)求都要新建一個(gè)連接而加重服務(wù)器的負(fù)擔(dān)。

KeepAlive的連接活躍時(shí)間當(dāng)然是受KeepAliveTimeOut限制的。如果第二次請(qǐng)求和第一次請(qǐng)求之間超過KeepAliveTimeOut的時(shí)間的話,第一次連接就會(huì)中斷,再新建第二個(gè)連接。 所以,一般情況下,圖片較多的網(wǎng)站應(yīng)該把KeepAlive設(shè)為On。但是KeepAliveTimeOut應(yīng)該設(shè)置為多少秒就是一個(gè)值得討論的問題了。 如果KeepAliveTimeOut設(shè)置的時(shí)間過短,例如設(shè)置為1秒,那么APACHE就會(huì)頻繁的建立新連接,當(dāng)然會(huì)耗費(fèi)不少的資源;反過來,如果KeepAliveTimeOut設(shè)置的時(shí)間過長,例如設(shè)置為300秒,那么APACHE中肯定有很多無用的連接會(huì)占用服務(wù)器的資源,也不是一件好事。 所以,到底要把KeepAliveTimeOut設(shè)置為多少,要看網(wǎng)站的流量、服務(wù)器的配置而定。

以下是我的配置:

63 ~]# vim /etc/httpd/httpd.conf 改: #Include /etc/httpd/extra/httpd-default.conf 為:Include /etc/httpd/extra/httpd-default.conf

vim /etc/httpd/extra/httpd-default.conf

修改: KeepAlive On KeepAliveTimeout 5

注:如果配置文件中這兩項(xiàng),就自己修改一下。源碼編譯的有時(shí)沒有這兩個(gè)參數(shù)。 考慮到我的網(wǎng)站上有不少的圖片,所以將KeepAlive設(shè)為On,一般的頁面兩次請(qǐng)求間隔不會(huì)超過30秒,所以這樣設(shè)置,至盡運(yùn)行狀況良好。如果是藝術(shù)品網(wǎng)站, 需要看的時(shí)間長,那么就設(shè)置長一些。

MaxKeepAliveRequests 默認(rèn):100 一個(gè)建立好的Keep-Alive連接,允許發(fā)送的請(qǐng)求的個(gè)數(shù)。一旦建立連接,要么就是個(gè)數(shù)達(dá)到了斷開,要么就是等KeepAliveTimeout時(shí)間到了斷開連接。

MaxKeepAliveRequests指令限制了當(dāng)啟用KeepAlive時(shí),每個(gè)連接允許的請(qǐng)求數(shù)量。如果將此值設(shè)為"0",將不限制請(qǐng)求的數(shù)目。我們建議最好將此值設(shè)為一個(gè)比較大的值,以確保最優(yōu)的服務(wù)器性能。"

這個(gè)數(shù)字的設(shè)置,必須考慮在一個(gè)時(shí)間段內(nèi),同一個(gè)用戶訪問你的服務(wù)會(huì)發(fā)多少請(qǐng)求。要結(jié)合KeepAliveTimeout參數(shù)來考慮。

舉個(gè)例子,用戶需要間隔時(shí)間不大于KeepAliveTimeout的時(shí)間內(nèi),連續(xù)請(qǐng)求10個(gè)文件,那么這個(gè)參數(shù)就應(yīng)該設(shè)置成10,如果用戶在連續(xù)時(shí)間里不斷請(qǐng)求訪問,則這個(gè)數(shù)值得設(shè)置得更多。否則就重新建立連接下載。一旦用戶連續(xù)進(jìn)行了10個(gè)請(qǐng)求后,并且這個(gè)用戶肯定在完成這些請(qǐng)求后的5秒內(nèi)不會(huì)再請(qǐng)求,甚至要在之后的很長時(shí)間后請(qǐng)求,那么這個(gè)KeepAliveTimeout時(shí)間就可以設(shè)置得很短,以便盡早斷開這種用戶,把資源讓個(gè)其他用戶。

TimeOut 默認(rèn):60 秒

"TimeOut指令用于設(shè)置Apache等待以下三種事件的時(shí)間長度:

接受一個(gè)GET請(qǐng)求耗費(fèi)的總時(shí)間。POST或PUT請(qǐng)求時(shí),接受兩個(gè)TCP包之間的時(shí)間。應(yīng)答時(shí)TCP包傳輸中兩個(gè)ACK包之間的時(shí)間。 比如:apache需要把jsp文件傳給后端tomcat服務(wù)器,而tomcat服務(wù)器關(guān)了,這時(shí)這個(gè)鏈接需要等待的超時(shí)時(shí)間,由TimeOut控制。

注:計(jì)時(shí)器在1.2版本之前的默認(rèn)值為1200,而現(xiàn)在已經(jīng)設(shè)置為300了,但對(duì)于絕大多數(shù)情況來說仍是足夠的。

5.3.2 案例分析:

假設(shè) KeepAlive 的超時(shí)時(shí)間為 10 秒鐘,服務(wù)器每秒處理 50 個(gè)獨(dú)立用戶訪問,那么系統(tǒng)中Apache的總進(jìn)程數(shù)就是 10 * 50 = 500 個(gè),如果一個(gè)進(jìn)程占用 4M 內(nèi)存,那么總共會(huì)消耗2G內(nèi)存,所以可以看出,在這種配置中,相當(dāng)消耗內(nèi)存,但好處是系統(tǒng)只處理了 50次 TCP 的握手和關(guān)閉操作。 如果關(guān)閉 KeepAlive,如果還是每秒50個(gè)用戶訪問,如果用戶每秒的并發(fā)請(qǐng)求數(shù)為3個(gè),那么 Apache 的總進(jìn)程數(shù)就是 50 * 3 = 150 個(gè),如果還是每個(gè)進(jìn)程占用 4M 內(nèi)存,那么總的內(nèi)存消耗為600M,這種配置能節(jié)省大量內(nèi)存,但是,系統(tǒng)處理了 150 次 TCP 的握手和關(guān)閉的操作,因此又會(huì)多消耗一些 CPU 資源。

總結(jié): 1、如果內(nèi)存和CPU都足夠,開啟和關(guān)閉KeepAlive對(duì)性能影響不大。 2、如果考慮服務(wù)器壓力,如果同一個(gè)客戶端對(duì)服務(wù)器會(huì)經(jīng)常訪問,建議開啟KeepAlive。

參考數(shù)值:

KeepAlive On KeepAliveTimeout 30 MaxKeepAliveRequests 100 #這個(gè)值一般不需要配置。

15.4 apache運(yùn)行模式-prefork-worker運(yùn)行模式介紹

15.4.1 apache不同運(yùn)行模式調(diào)優(yōu)。 Web服務(wù)器Apache目前一共有三種穩(wěn)定的MPM(Multi-Processing Module,多進(jìn)程處理模塊)模式。 Prefork:進(jìn)程模式 worker:線程模式 Event : 事件模式(2.4版本后開始穩(wěn)定)

15.6 prefork運(yùn)行模式詳解

1、Prefork MPM : Prefork MPM實(shí)現(xiàn)了一個(gè)非線程的、預(yù)派生的web服務(wù)器。它在Apache啟動(dòng)之初,就先預(yù)派生一些子進(jìn)程,然后等待連接;可以減少頻繁創(chuàng)建和銷毀進(jìn)程的開銷,每個(gè)子進(jìn)程只有一個(gè)線程,在一個(gè)時(shí)間點(diǎn)內(nèi),只能處理一個(gè)請(qǐng)求。這是一個(gè)成熟穩(wěn)定,可以兼容新老模塊,也不需要擔(dān)心線程安全問題,但是一個(gè)進(jìn)程相對(duì)占用資源,消耗大量內(nèi)存,不擅長處理高并發(fā)的場景。 最重要的是將MaxRequestWorkers設(shè)置為一個(gè)足夠大的數(shù)值以處理潛在的請(qǐng)求高峰,同時(shí)又不能太大,以致需要使用的內(nèi)存超出物理內(nèi)存的大小。 注: Prefork 是基于多進(jìn)程的模式。 優(yōu)點(diǎn):因?yàn)槊總€(gè)進(jìn)程使用獨(dú)立的內(nèi)存空間,所以比較安全。一個(gè)進(jìn)程壞了,不會(huì)影響其他進(jìn)程。 缺點(diǎn):占用的內(nèi)存比較大。 2、Worker MPM : 和prefork模式相比,worker使用了多進(jìn)程和多線程的混合模式,worker模式也同樣會(huì)先預(yù)派生一些子進(jìn)程,然后每個(gè)子進(jìn)程創(chuàng)建一些線程,同時(shí)包括一個(gè)監(jiān)聽線程,每個(gè)請(qǐng)求過來會(huì)被分配到一個(gè)線程來服務(wù)。線程比起進(jìn)程會(huì)更輕量,因?yàn)榫€程是通過共享父進(jìn)程的內(nèi)存空間,因此,內(nèi)存的占用會(huì)減少一些,在高并發(fā)的場景下會(huì)比prefork有更多可用的線程,表現(xiàn)會(huì)更優(yōu)秀一些;另外,如果一個(gè)線程出現(xiàn)了問題也會(huì)導(dǎo)致同一進(jìn)程下的線程出現(xiàn)問題,如果是多個(gè)線程出現(xiàn)問題,也只是影響Apache的一部分,而不是全部。由于用到多進(jìn)程多線程,需要考慮到線程的安全了,在使用keep-alive長連接的時(shí)候,某個(gè)線程會(huì)一直被占用,即使中間沒有請(qǐng)求,需要等待到超時(shí)才會(huì)被釋放(該問題在prefork模式下也存在)。 注: Worker MPM 優(yōu)點(diǎn):可以處理海量請(qǐng)求,而系統(tǒng)資源的開銷小。原因:一個(gè)進(jìn)程中包括多個(gè)線程。多個(gè)線程之間可以共享內(nèi)存,所以占用的內(nèi)存資源比較少。如圖: 缺點(diǎn):不太安全。如果一個(gè)線程壞了。 整個(gè)進(jìn)程都要壞了。另外存在keep-alive長連接占用資源時(shí)間過長

如何避免進(jìn)程中某個(gè)線程壞了? 一個(gè)進(jìn)程中所有線程完成一定數(shù)量的請(qǐng)求后,自動(dòng)關(guān)閉,再重打開。就可以避免內(nèi)存溢出等問題。 就像一個(gè)電腦開機(jī)時(shí)間長了,會(huì)卡,需要重啟一下。 進(jìn)程包括線程的。 一個(gè)進(jìn)程可以有一個(gè)或多個(gè)線程。

總結(jié): 不管是Worker模式或是Prefork 模式,Apache總是試圖保持一些備用的(spare)或者是空閑的子進(jìn)程(空閑的服務(wù)線程池)用于迎接即將到來的請(qǐng)求。這樣客戶端就不需要在得到服務(wù)前等候子進(jìn)程的產(chǎn)生。 這就是:預(yù)先派生進(jìn)程或線程。

3、Event MPM:event模式是在2.4版本中才穩(wěn)定發(fā)布的模式。這是Apache最新的工作模式,它和worker模式很像,不同的是在于它解決了keep-alive長連接的時(shí)候占用線程資源被浪費(fèi)的問題,在event工作模式中,會(huì)有一些專門的線程用來管理這些keep-alive類型的線程,當(dāng)有真實(shí)請(qǐng)求過來的時(shí)候,將請(qǐng)求傳遞給服務(wù)器的線程,執(zhí)行完畢后,又允許它釋放。這增強(qiáng)了在高并發(fā)場景下的請(qǐng)求處理。 當(dāng)某個(gè)連接沒有請(qǐng)求時(shí),會(huì)主動(dòng)關(guān)閉連接,在work模式下,必須等keep-alive超時(shí),才可以釋放。 在configure配置編譯參數(shù)的時(shí)候,可以使用 --with-mpm=prefork|worker|event 來指定編譯為那一種MPM,當(dāng)然也可以用編譯為三種都支持:–enable-mpms-shared=all,這樣在編譯的時(shí)候會(huì)在modules目錄下自動(dòng)編譯出三個(gè)MPM文件的so,然后通過修改httpd.conf配置文件更改MPM

15.4.2 實(shí)戰(zhàn)2: Apache prefork調(diào)優(yōu)

案例場景: 當(dāng)用戶訪問網(wǎng)站時(shí),在客戶端瀏覽器輸入網(wǎng)址后長時(shí)間無響應(yīng),而一旦連接上之后,頁面很快就打開了(因?yàn)榕渲昧顺志眠B接)。 排查: 登錄上linux服務(wù)器后,使用netstat觀察最大連接數(shù)穩(wěn)定在257,查看apache配置文件中,prefork模式中,MaxRequestWorkers為 257, 這因?yàn)閍pache連接數(shù)明顯不夠用。

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

63 ~]# /usr/local/apache/bin/httpd -M | grep event mpm_event_module (shared) #看到這個(gè),說明是prefork多進(jìn)程模式

注:查看模塊: httpd -l //查看MPM模塊 httpd -M //查看DSO模塊,由于mod_mpm_event.so,mod_mpm_prefork.so,mod_mpm_worker.so,此三個(gè)模塊被做成DSO模塊,所以使用httpd -M查看

或:

63 src]# /usr/local/apache/bin/httpd -V Server version: web/8.1.2-dev (Unix) Server built: Feb 8 2018 21:29:56 Server’s Module Magic Number: 20120211:36 Server loaded: APR 1.5.2, APR-UTIL 1.5.2 Compiled using: APR 1.5.2, APR-UTIL 1.5.2 Architecture: 64-bit Server MPM: event

注:如果使用rpm安裝的httpd,直接執(zhí)行: [root@xuegod63 ~]# httpd -M |grep prefork mpm_prefork_module (shared) [root@xuegod63 ~]# rpm -qf which httpd #httpd命令是apache服務(wù)器軟件包安裝的 httpd-2.4.10-15.el7.x86_64

總結(jié): RHEL6/7系統(tǒng)自帶的apache默認(rèn)采用的是prefork進(jìn)程模型;在編譯apache源碼時(shí),如果不用–with-mpm顯式指定某種MPM,prefork就是缺省的MPM;

httpd2.4 新特性

1)MPM支持在運(yùn)行時(shí)裝載 指定啟用: –enable-mpms-shared=all --with-mpm=event //把所有支持的MPM都編譯進(jìn)來,但啟用默認(rèn)的是event 2) 支持event 3)異步讀寫 4) 在每模塊及每目錄上指定日志級(jí)別 5)每請(qǐng)求配置: 6) 增強(qiáng)版的表達(dá)式分析器 7) 毫秒級(jí)的keepalive timeout ,使用ms指定為毫秒 8)支持主機(jī)名的虛擬主機(jī)不在需要NameVirtualHost指令 9) 支持使用自定義變量 新增一些模塊:mod_proxy_fcgi(基于fcgi方式調(diào)用執(zhí)行環(huán)境) mod_ratelimit(用于做速率限定) mod_request(對(duì)請(qǐng)求方法做限定) mod_remoteip(對(duì)遠(yuǎn)端IP做限定) 對(duì)于基于IP的訪問做了修改,不在使用order,allow,deny這些機(jī)制;而是統(tǒng)一使用require進(jìn)行

調(diào)整MPM模塊則直接修改主配置文件中的LoadModule指定即可

#LoadModule mpm_event_module modules/mod_mpm_event.so LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #LoadModule mpm_worker_module modules/mod_mpm_worker.so

2,對(duì)prefork模式進(jìn)行優(yōu)化。 修改apache 的httpd-mpm.conf 配置.

[root@xuegod63 ~]# vim /etc/httpd/httpd.conf 改:449 #Include conf/extra/httpd-mpm.conf 為:Include conf/extra/httpd-mpm.conf [root@xuegod63 ~]# vim /etc/httpd/extra/httpd-mpm.conf #第一次打開的時(shí)候默認(rèn)配置是這樣的。 改: 28 29 StartServers 5 30 MinSpareServers 5 31 MaxSpareServers 10 32 MaxRequestWorkers 250 33 MaxRequestsPerChild 0 34

注:spare[英][spe??] 備用 為: ServerLimit 3000 StartServers 50 MinSpareServers 50 MaxSpareServers 100 MaxRequestWorkers 3000 MaxRequestsPerChild 1000 63 ~]#systemctl restart httpd #重啟服務(wù)

剛才配置文件中參數(shù)詳解:

首先來看看在prefork模式下,apache各個(gè)參數(shù)的意義:

ServerLimit 是最大的進(jìn)程數(shù) MaxRequestWorkers 是最大的請(qǐng)求并發(fā)。

注:所以他們的關(guān)系是MaxRequestWorkers=ServerLimit*進(jìn)程的線程數(shù)。因?yàn)?,在prefork模式下一個(gè)進(jìn)程只有一個(gè)線程,并且一個(gè)進(jìn)程對(duì)應(yīng)一個(gè)連接。 所以這里配置成:MaxRequestWorkers=ServerLimit,MaxRequestWorkers不得大于ServerLimit參數(shù)。

如果做5000并發(fā)的web,需要多少內(nèi)存? 5000*2M/0.8/1024(轉(zhuǎn)G)=12.2G 。 服務(wù)器大概需要14G -16G 內(nèi)存。

ServerLimit的大小,取決于你系統(tǒng)的資源,每個(gè)apache進(jìn)程默認(rèn)大約占用2M內(nèi)存,基本可以按照這個(gè)公式來計(jì)算:最大內(nèi)存*80%/2M=ServerLimit。 注:一個(gè)apache進(jìn)程實(shí)際使用內(nèi)存大小和處理的請(qǐng)求數(shù)有關(guān)。即和MaxRequestsPerChild 這個(gè)值有關(guān)。(MaxRequestsPerChild,每個(gè)子進(jìn)程在其生存期內(nèi)允許處理的最大請(qǐng)求數(shù)量)。

15.4.3 StartServers 50 啟動(dòng)時(shí)默認(rèn)啟動(dòng)的 進(jìn)程數(shù)

這個(gè)參數(shù)默認(rèn)是5,因?yàn)閍pache會(huì)通過自動(dòng)啟動(dòng)新進(jìn)程來增加響應(yīng)服務(wù)的進(jìn)程數(shù),這個(gè)值不做調(diào)整的也是可以的,會(huì)由默認(rèn)的5增加到滿足服務(wù)的進(jìn)程數(shù),但是會(huì)出現(xiàn)開始啟動(dòng)后,突然后有大并發(fā)訪問時(shí),因?yàn)檫M(jìn)程數(shù)太小,出現(xiàn)卡住的現(xiàn)象。 例:查看進(jìn)程數(shù):

63 ~]# ps -axu | grep httpd | wc -l Warning: bad syntax, perhaps a bogus ‘-’? See /usr/share/doc/procps-3.2.8/FAQ 52

注:所以不要一次啟動(dòng)太多的apache進(jìn)程,只啟動(dòng)足夠用的進(jìn)程即可。其他增加的流量,apache會(huì)自動(dòng)調(diào)整進(jìn)程數(shù),直到MaxRequestWorkers參數(shù)限定的范圍。

15.4.4 MinSpareServers 55 最小空閑進(jìn)程

Spare :[spe??] 備用 MinSpareServers指令設(shè)置空閑子進(jìn)程的最小數(shù)量。 MinSpareServers指令設(shè)置空閑子進(jìn)程的最小數(shù)量。所謂空閑子進(jìn)程是指沒有正在處理請(qǐng)求的子進(jìn)程。如果當(dāng)前空閑子進(jìn)程數(shù)少于MinSpareServers ,那么Apache將以第一秒一個(gè),第二秒兩個(gè),第三秒四個(gè),按指數(shù)遞增個(gè)數(shù)的速度產(chǎn)生新的子進(jìn)程。如此按指數(shù)級(jí)增加創(chuàng)建的進(jìn)程數(shù),最多達(dá)到每秒32個(gè),直到滿足 MinSpareServers設(shè)置的值為止;這就是預(yù)派生(prefork)的由來;這種模式可以不必在請(qǐng)求到來時(shí)再產(chǎn)生新的進(jìn)程,從而減小了系統(tǒng)開銷以增加性能;

15.4.5 MaxSpareServers 100 最大空閑進(jìn)程

MaxSpareServers指令設(shè)置空閑子進(jìn)程的最大數(shù)量。所謂空閑子進(jìn)程是指沒有正在處理請(qǐng)求的子進(jìn)程。如果當(dāng)前有超過MaxSpareServers數(shù)量的空閑子進(jìn)程,那么父進(jìn)程將殺死多余的子進(jìn)程。 可以調(diào)整MinSpareServers 和MaxSpareServers這兩個(gè)參數(shù),但是這兩個(gè)參數(shù)的值不能設(shè)得太大,否則apache進(jìn)程太多,會(huì)導(dǎo)致內(nèi)存占用太多。

注:在一臺(tái)壓力大(并發(fā)訪問2000)的服務(wù)器上,MaxSpareServers這個(gè)值設(shè)置的是200。保留最大并發(fā)數(shù)的10分之一。

設(shè)置了這個(gè)值的好處是不會(huì)有太多的空閑的進(jìn)程在消耗資源,關(guān)閉空閑apache進(jìn)程的同時(shí),會(huì)釋放內(nèi)存,從而減少系統(tǒng)資源消耗。

15.4.6 MaxRequestsPerChild 1000

“MaxRequestsPerChild指令設(shè)置每個(gè)子進(jìn)程在其生存期內(nèi)允許處理的最大請(qǐng)求數(shù)量。到達(dá)MaxRequestsPerChild的限制后,子進(jìn)程將會(huì)結(jié)束。如果MaxRequestsPerChild為"0”,子進(jìn)程將永遠(yuǎn)不會(huì)結(jié)束。

將MaxRequestsPerChild設(shè)置成非零值有兩個(gè)好處:

可以防止(偶然的)內(nèi)存泄漏無限進(jìn)行,從而耗盡內(nèi)存。給進(jìn)程一個(gè)有限壽命,從而有助于當(dāng)服務(wù)器負(fù)載減輕的時(shí)候減少活動(dòng)進(jìn)程的數(shù)量。 注:當(dāng)KeepAlive 為On, 開啟長鏈接時(shí),發(fā)送的請(qǐng)求,在MaxRequestsPerChild里面只算一個(gè),不管這個(gè)連接發(fā)送了多少個(gè)請(qǐng)求。 注意:對(duì)于KeepAlive鏈接,只有第一個(gè)請(qǐng)求會(huì)被計(jì)數(shù)。事實(shí)上,它改變了每個(gè)子進(jìn)程限制最大鏈接數(shù)量的行為。 也就是說實(shí)際上這個(gè)時(shí)候子進(jìn)程最大連接數(shù)

=MaxRequestsPerChildMaxKeepAliveRequests 例: MaxRequestsPerChild 1000 MaxKeepAliveRequests 200 #一個(gè)長連接可以處理請(qǐng)求數(shù)為200 每子進(jìn)程最大連接數(shù)=1000200=20萬次請(qǐng)求。 注:這個(gè)進(jìn)程處理的數(shù)量太大了。 改為: MaxRequestsPerChild 100 MaxKeepAliveRequests 20 #一個(gè)長連接可以處理請(qǐng)求數(shù)為20 每子進(jìn)程最大連接數(shù)=100*20=2千次請(qǐng)求。

注:所以在開啟KeepAlive后,需要同時(shí)設(shè)置MaxRequestsPerChild和MaxKeepAliveRequests,確保每個(gè)apache進(jìn)程在服務(wù)一定請(qǐng)求數(shù)后會(huì)關(guān)閉,重新開啟新的子進(jìn)程,避免apache進(jìn)程異常導(dǎo)致的內(nèi)存泄露和資源占用。

15.4.7 實(shí)戰(zhàn):如何跟據(jù)硬件來配置連接數(shù)?

連接數(shù)理論上是越大越好,但是得根據(jù)硬件,服務(wù)器的CPU,內(nèi)存,帶寬等因素,查看當(dāng)前的apache連接數(shù)。

63 ~]# ps -aux | grep httpd | wc -l 52 注:總進(jìn)程數(shù)為52-2

查看httpd 占用內(nèi)存的平均數(shù): 使用ps查看RSS列,每個(gè)進(jìn)程占用的內(nèi)存。

63 ~]# ps -axu | grep http | awk ‘{print $6}’ #單位是K,現(xiàn)在一個(gè)使用1.6M左右 1636 1636 1636 1636 1636 1636 1636 1636 1636 或: 63 ~]# ps aux | grep http |awk ‘{sum += $6;n++};END{print sum/n}’ 1638.92

注:一個(gè)進(jìn)程使用1.6M左右內(nèi)存。

15.4.8 如何設(shè)置最大鏈接數(shù):

計(jì)算后要減去服務(wù)器系統(tǒng)本身所需要的資源。比如內(nèi)存2G,減去500M留給服務(wù)器,還有1.5G,那么可得到最大連接數(shù):1500/1.6=930左右。 根據(jù)情況修改后的http-mpm.conf的prefork的配置后為: StartServers 50 MinSpareServers 50 MaxSpareServers 100 ServerLimit 1000 MaxRequestWorkers 1000 MaxRequestsPerChild 100

注:這里重點(diǎn)介紹下ServerLimit,必須放到MaxRequestWorkers前,值要等于MaxRequestWorkers。 重啟apache,再打開網(wǎng)站看看是否還會(huì)有慢的問題了。

63 ~]# systemctl restart httpd

測試: 動(dòng)態(tài)觀察apache的最大連接數(shù):

63 ~]# watch -n 1 “pgrep httpd|wc -l” Every 1.0s: pgrep httpd|wc -l Wed Sep 2 15:24:08 2015 51 #有51個(gè)進(jìn)程

15.4.9 生產(chǎn)環(huán)境配置實(shí)例1:物理是內(nèi)存4G StartServers 20 MinSpareServers 20 MaxSpareServers 30 ServerLimit 2000 MaxRequestWorkers 2000 MaxRequestsPerChild 5000 #沒有開keepalive是5000,如果開啟keepalive就配置成500

15.4.10 實(shí)戰(zhàn)2: apache worker模擬性能優(yōu)化

Apache2.0的性能方面的改進(jìn)最明顯的變化就在于worker; 優(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模式。

63 ~]# /usr/local/apache/bin/httpd -M |grep worker //查看是否使用worker模塊,沒有輸出,則說明沒有使用

63 ~]# ls /usr/local/apache/modules/* |grep worker //查模塊目錄,模塊已存在 /usr/local/apache/modules/mod_mpm_worker.so

63 ~]# vim /etc/httpd/httpd.conf //修改apache配置文件 #LoadModule mpm_event_module modules/mod_mpm_event.so #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so LoadModule mpm_worker_module modules/mod_mpm_worker.so //只開啟worker項(xiàng),如此項(xiàng)沒有,則手動(dòng)添加即可

63 ~]# systemctl restart httpd //重啟apache

63 ~]# vim /etc/httpd/extra/httpd-mpm.conf 63 ~]# vim /etc/httpd/extra/httpd-mpm.conf

改:

StartServers 2 MaxRequestWorkers 150000 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 63 ~]# systemctl restart httpd //重啟apache

配置參數(shù)說明: StartServers 2 #最初建立的子進(jìn)程 MaxRequestWorkers 150000 # MaxRequestWorkers,apache同時(shí)最多能支持150000個(gè)并發(fā)訪問,超過的要進(jìn)入隊(duì)列等待,其大小由ServerLimit和ThreadsPerChild的乘積決定。這個(gè)150000指的是所有子進(jìn)程中的線程總數(shù)。一般要把這個(gè)值配置的大一些

MinSpareThreads 25 #基于整個(gè)服務(wù)器監(jiān)視的最小空閑線程數(shù),如果空閑的線程小于設(shè)定值,apache會(huì)自動(dòng)建立線程,如果服務(wù)器負(fù)載大的話,可以考慮加大此參考值。 MaxSpareThreads 75 #基于整個(gè)服務(wù)器監(jiān)視的最大空閑線程數(shù),如果空閑的線程大于設(shè)定值,apache會(huì)自動(dòng)kill掉多余的線程,如果服務(wù)器負(fù)載大的話,可以考慮加大此參考值。

ThreadsPerChild 25 #每個(gè)子進(jìn)程包含固定的線程數(shù),此參數(shù)在worker模式中,是影響最大的參數(shù),ThreadsPerChild的最大缺省值是64,如果負(fù)載較大,64是不夠的. MaxRequestsPerChild 0 #每個(gè)子進(jìn)程可以支持的請(qǐng)求數(shù),這要設(shè)置為0,因?yàn)橐粋€(gè)進(jìn)程關(guān)閉,所有的線程也都關(guān)了。 注:child 子進(jìn)程

ServerLimit服務(wù)器允許配置進(jìn)程數(shù)的上限。 ThreadLimit每個(gè)子進(jìn)程可以配置的線程上限

常用配置參考:

生產(chǎn)環(huán)境配置實(shí)例: StartServers 5 MaxRequestWorkers 9600 ServerLimit 64 MinSpareThreads 25 MaxSpareThreads 500 ThreadLimit 200 ThreadsPerChild 150 MaxRequestsPerChild 0

此服務(wù)器配置: 最多進(jìn)程數(shù):64個(gè); 最多線程數(shù)(最大并發(fā)數(shù)) 64150=9600 ;不可能超過64200=12800

案例: 如果MaxRequestsPerChild 30000 這樣配置會(huì)有什么結(jié)果? 結(jié)果:一但到30000次請(qǐng)求 , 那150個(gè)線程都關(guān)了,會(huì)出大量閃斷情況。

event模式:了解一下 StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 1000

總結(jié): Apache httpd 能更好的為有特殊要求的站點(diǎn)定制。例如,要求 更高伸縮性的站點(diǎn)可以選擇使用線程的 MPM,即 worker 或 event; 需要可靠性或者與舊軟件兼容的站點(diǎn)可以使用 prefork。

15.7 rewrite-禁止網(wǎng)站下某個(gè)目錄執(zhí)行PHP文件-apache調(diào)優(yōu)總結(jié)

15.7.1 Rewrite規(guī)則簡介: Rewirte主要的功能就是實(shí)現(xiàn)URL的跳轉(zhuǎn),它的正則表達(dá)式是基于Perl語言。可基于服務(wù)器級(jí)的(httpd.conf)和目錄級(jí)的 (.htaccess)兩種方式。如果要想用到rewrite模塊,必須先安裝或加載rewrite模塊。 安裝Rewirte模塊兩種方式: 方法一:是編譯apache的時(shí)候就直接 安裝rewrite模塊。 方法二:編譯apache時(shí)以DSO模式安裝apache,然后再利用源碼和apxs來安裝rewrite模塊。

15.7.2 基于服務(wù)器級(jí)的(httpd.conf)有兩種方法: 方法1:在httpd.conf的全局下 直接利用RewriteEngine on來打開rewrite功能; 方法2:在局部里利用RewriteEngine on來打開rewrite功能,下面將會(huì)舉例說明,需要注意的是,必須在每個(gè)virtualhost里用RewriteEngine on來打開rewrite功能。否則virtualhost里沒有RewriteEngine on它里面的規(guī)則也不會(huì)生效。

基于目錄級(jí)的(.htaccess),要注意一點(diǎn)那就是必須打開此目錄的FollowSymLinks屬性且在.htaccess里要聲明RewriteEngine on。

15.7.3 Apache mod_rewrite規(guī)則重寫的標(biāo)志一覽:

網(wǎng)上學(xué)習(xí)資料一大堆,但如果學(xué)到的知識(shí)不成體系,遇到問題時(shí)只是淺嘗輒止,不再深入研究,那么很難做到真正的技術(shù)提升。

需要這份系統(tǒng)化的資料的朋友,可以添加V獲?。簐ip1024b (備注軟件測試)

一個(gè)人可以走的很快,但一群人才能走的更遠(yuǎn)!不論你是正從事IT行業(yè)的老鳥或是對(duì)IT行業(yè)感興趣的新人,都?xì)g迎加入我們的的圈子(技術(shù)交流、學(xué)習(xí)資源、職場吐槽、大廠內(nèi)推、面試輔導(dǎo)),讓我們一起學(xué)習(xí)成長!

總結(jié): Apache httpd 能更好的為有特殊要求的站點(diǎn)定制。例如,要求 更高伸縮性的站點(diǎn)可以選擇使用線程的 MPM,即 worker 或 event; 需要可靠性或者與舊軟件兼容的站點(diǎn)可以使用 prefork。

15.7 rewrite-禁止網(wǎng)站下某個(gè)目錄執(zhí)行PHP文件-apache調(diào)優(yōu)總結(jié)

15.7.1 Rewrite規(guī)則簡介: Rewirte主要的功能就是實(shí)現(xiàn)URL的跳轉(zhuǎn),它的正則表達(dá)式是基于Perl語言??苫诜?wù)器級(jí)的(httpd.conf)和目錄級(jí)的 (.htaccess)兩種方式。如果要想用到rewrite模塊,必須先安裝或加載rewrite模塊。 安裝Rewirte模塊兩種方式: 方法一:是編譯apache的時(shí)候就直接 安裝rewrite模塊。 方法二:編譯apache時(shí)以DSO模式安裝apache,然后再利用源碼和apxs來安裝rewrite模塊。

15.7.2 基于服務(wù)器級(jí)的(httpd.conf)有兩種方法: 方法1:在httpd.conf的全局下 直接利用RewriteEngine on來打開rewrite功能; 方法2:在局部里利用RewriteEngine on來打開rewrite功能,下面將會(huì)舉例說明,需要注意的是,必須在每個(gè)virtualhost里用RewriteEngine on來打開rewrite功能。否則virtualhost里沒有RewriteEngine on它里面的規(guī)則也不會(huì)生效。

基于目錄級(jí)的(.htaccess),要注意一點(diǎn)那就是必須打開此目錄的FollowSymLinks屬性且在.htaccess里要聲明RewriteEngine on。

15.7.3 Apache mod_rewrite規(guī)則重寫的標(biāo)志一覽:

網(wǎng)上學(xué)習(xí)資料一大堆,但如果學(xué)到的知識(shí)不成體系,遇到問題時(shí)只是淺嘗輒止,不再深入研究,那么很難做到真正的技術(shù)提升。

需要這份系統(tǒng)化的資料的朋友,可以添加V獲取:vip1024b (備注軟件測試) [外鏈圖片轉(zhuǎn)存中…(img-x2t1t1ER-1713329828429)]

一個(gè)人可以走的很快,但一群人才能走的更遠(yuǎn)!不論你是正從事IT行業(yè)的老鳥或是對(duì)IT行業(yè)感興趣的新人,都?xì)g迎加入我們的的圈子(技術(shù)交流、學(xué)習(xí)資源、職場吐槽、大廠內(nèi)推、面試輔導(dǎo)),讓我們一起學(xué)習(xí)成長!

柚子快報(bào)邀請(qǐng)碼778899分享:LAMP之a(chǎn)pache調(diào)優(yōu)

http://yzkb.51969.com/

相關(guān)閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/18945564.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄