- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會(huì )理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構許可:滇D3-20230001
- 代理域名注冊服務(wù)機構:新網(wǎng)數碼
Apache服務(wù)器性能調優(yōu)
Apache配置對您的服務(wù)器的性能有重大影響。 提高服務(wù)器性能的最簡(jiǎn)單方法是關(guān)閉不需要的?塊。 本指南涵蓋Apache模塊,關(guān)閉哪些模塊以及其他Apache性能調整選項。
有多種工具可以幫助確定是否需要更改資源設置,包括top命令和負載測試程序Siege。 使用以下命令查看使用統計信息
echo [PID] [MEM] [PATH] && ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20
更詳細用于幫助了解Apache資源使用情況的工具包括Apache mod_status和Apache2Buddy。
Apache mod_status通過(guò)生成詳細的狀態(tài)頁(yè)面來(lái)顯示與入站服務(wù)器連接相關(guān)的信息。示例如下:
1.打開(kāi)您的網(wǎng)站的配置文件。 此文件位于Debian / Ubuntu系統上的/etc/apache2/sites-available/example.com.conf或CentOS / Fedora系統上的/etc/httpd/conf.d/vhost.conf。
2.將以下內容添加到塊中:
/etc/apache2/sites-available/example.com.conf (Debian/Ubuntu)
/etc/httpd/conf.d/vhost.conf (CentOS/Fedora)
<Location /server-status> SetHandler server-status Order Deny,Allow Deny from all Allow from localhost </Location>
3.Apache mod_status還提供了一個(gè)名為ExtendedStatus的選項,該選項提供有關(guān)向Apache發(fā)送的每個(gè)請求的額外信息。 要啟用ExtendedStatus編輯您的Apache配置文件:
/etc/apache2/apache2.conf (Debian/Ubuntu)
/etc/httpd/confd/httpd.conf (CentOS/Fedora)
ExtendedStatus On
4.重啟Apache
Debian/Ubuntu:
service apache2 restart
CentOS/Fedora:
/bin/systemctl reload httpd.service 5.要查看生成的文件,請下載Lynx:
Debian/Ubuntu:
apt-get install lynx
Fedora/CentOS:
yum install lynx
6.查看狀態(tài)頁(yè)
lynx http://www.tjdsmy.cn/server-status
Apache2Buddy腳本與MySQLTuner類(lèi)似,它檢查您的Apache設置,并根據您的Apache進(jìn)程內存和總體RAM提出建議。 雖然它是一個(gè)相當基本的程序,專(zhuān)注于MaxClients指令,不過(guò)Apache2Buddy相當有用,可以通過(guò)單個(gè)命令運行:
curl -L http://www.tjdsmy.cn/ | perl
Apache提供兩個(gè)多處理模塊,三個(gè)(如果在A(yíng)pache 2.4上),用于管理您的設置。
每個(gè)模塊創(chuàng )建子進(jìn)程,主要區別在于它們如何處理線(xiàn)程。
prefork模塊在啟動(dòng)時(shí)創(chuàng )建多個(gè)子進(jìn)程,每個(gè)子進(jìn)程只處理一個(gè)線(xiàn)程。 由于這些進(jìn)程一次只處理一個(gè)線(xiàn)程,因此如果有太多的并發(fā)請求,請求速度就會(huì )受到影響。 如果發(fā)生這種情況,一些請求基本上必須等待處理。 要處理此問(wèn)題,請增加生成的子進(jìn)程數,但請注意,這會(huì )增加RAM使用量。 Prefork是最安全的模塊,當使用不是線(xiàn)程安?的模塊時(shí)使用。
Worker模塊的子進(jìn)程在每個(gè)進(jìn)程中生成許多線(xiàn)程,每個(gè)線(xiàn)程都能處理請求。 這提升了服務(wù)器的并發(fā)能力,當然也能減少服務(wù)器內存使用量。 總的來(lái)說(shuō),工作模塊提供了更高的性能,但是比prefork安全性更低,不能與不是線(xiàn)程安全的模塊一起使用。
Event模塊僅在A(yíng)pache 2.4上可用,并且基于Worker MPM。 和Worker一樣,它為每個(gè)子進(jìn)程創(chuàng )建多個(gè)線(xiàn)程,一個(gè)線(xiàn)程專(zhuān)用于KeepAlive連接,一旦請求發(fā)出,它就傳遞給子線(xiàn)程。 這對于多個(gè)并發(fā)連接很有用,特別是那些不是同時(shí)處于活動(dòng)狀態(tài)但卻偶爾請求的連接。 在SSL連接的情況下,Event MPM的作用與Worker相同。
一旦選擇了MPM,您需要更改配置中的值。 這些設置位于Debian / Ubuntu上的/etc/apache2/apache2.conf文件和CentOS / Fedora上的/etc/httpd/conf/httpd.conf文件。 MPM配置如下:
<IfModule mpm_prefork_module> StartServers 4 MinSpareServers 20 MaxSpareServers 40 MaxClients 200 MaxRequestsPerChild 4500 </IfModule>
對于其他MPM,分別將
重新配置Apache服務(wù)器的下一步是更改上述設置。 要做到這一點(diǎn),你需要知道每個(gè)值的作用,以及如何更好地調節它。
同樣,進(jìn)行配置更改的最佳方法是進(jìn)行增量更改,然后監視效果。
StartServers值指示啟?時(shí)創(chuàng )建的子進(jìn)程數,并根據負載進(jìn)行動(dòng)態(tài)控制。 通常沒(méi)有理由更改此數字,除非您的服務(wù)器頻繁重新啟動(dòng),并在重新啟動(dòng)時(shí)接收大量請求。
設置空閑子進(jìn)程的最小數量。 如果進(jìn)程數少于MinSpareServer數,則會(huì )在A(yíng)pache 2.2或更低版本上以每秒一個(gè)的速率創(chuàng )建更多進(jìn)程。 使用Apache 2.4,此速率呈指數增長(cháng),從1開(kāi)始到每秒生成32個(gè)子進(jìn)程。 這個(gè)值的作用是,當收到一個(gè)新請求時(shí),它可以直接使用空閑線(xiàn)程而不需要新生成一個(gè); 如果已經(jīng)沒(méi)有可用線(xiàn)程了,Apache會(huì )新生成一個(gè)子進(jìn)程,不過(guò)這會(huì )消耗服務(wù)器資源以及延長(cháng)請求處理時(shí)間。 注意,太多的空閑進(jìn)程也會(huì )對服務(wù)器產(chǎn)生不利影響。
設置空閑子進(jìn)程的最大數量。 如果空閑進(jìn)程超出這個(gè)值,多余的將會(huì )終止。 除非您的網(wǎng)站非常繁忙,否則此數字不應設置過(guò)高,因為即使空閑進(jìn)程也會(huì )消耗資源。
可同時(shí)提供的最大請求數量,請求數超過(guò)限制時(shí)后來(lái)的請求將入隊列。 如果這個(gè)設置太低,隊列中的連接可能會(huì )超時(shí); 但是,如果設置過(guò)高,則會(huì )導致內存不足出現swap。 如果此值增加超過(guò)256,則還必須增?ServerLimit值。
計算最佳值的一種方法是用服務(wù)器可用內存除以每個(gè)Apache進(jìn)程使用的內存量,注意要為其他進(jìn)程留出一些內存空間。 使用ApacheBuddy幫助確定這些值,或下面的命令。
要確定每個(gè)Apache進(jìn)程使用的RAM,請在Debian或Ubuntu系統上將apache2替換為httpd:
ps -ylC httpd --sort:rss
除以1024轉為Mb
獲取內存使用信息:
free -m
售前咨詢(xún)
售后咨詢(xún)
備案咨詢(xún)
二維碼
TOP