apache優化大全,陸續收集中
Apache的配置文件httpd.conf 加載MPM配置(去掉前面的註釋):
# Server-pool management (MPM specific)
Include etc/apache22/extra/httpd-mpm.conf
如果要查看當前網站的連接數,可執行命令:
# ps aux | grep httpd | wc -l
27
表示當前鏈接為27個。
如果這個值大於httpd-mpm.conf文件中MaxClients 的值,那麼新的連接將會排隊等候,這樣就造成了訪問慢的緣故,因此需要修改MaxClients的值。如果實時檢查httpd的連接數則執行:
# watch -n 1 -d "pgrep httpd|wc -l" //每秒鐘一次
計算httpd佔用內存的平均數:
# ps aux |awk '/httpd/{sum+=$6;n++};END{print sum/n}'
17988.3 //單位為k,我感覺我的服務器單個佔用內存有點大哦
第六個字段為RSS,表示的是實際物理內存,第五個字段為VSZ ,表示的是虛擬內存
--------------------------------------------------------------------------------------
查看TCP的鏈接情況:
# netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c
# netstat -an | grep -i "IP地址:80" | awk '{print $6}' | sort | uniq -c | sort -n
7 SYN_RECV
10 FIN_WAIT1
12 FIN_WAIT2
18 ESTABLISHED
124 TIME_WAIT
如果有大量SYN_RECV則有可能在遭受DDOS攻擊。
--------------------------------------------------------------------------------
Apache服務器配置技巧
1、如何設置請求等待時間
在httpd.conf裡面設置:
TimeOut n
其中n為整數,單位是秒。
設置這個TimeOut適用於三種情況:
2、如何接收一個get請求的總時間
接收一個post和put請求的TCP包之間的時間
TCP包傳輸中的響應(ack)時間間隔
3、如何使得apache監聽在特定的端口
修改httpd.conf裡面關於Listen的選項,例如:
Listen 8000
是使apache監聽在8000端口
而如果要同時指定監聽端口和監聽地址,可以使用:
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
這樣就使得apache同時監聽在192.170.2.1的80端口和192.170.2.5的8000端口。
當然也可以在httpd.conf裡面設置:
Port 80
這樣來實現類似的效果。
4、如何設置apache的最大空閒進程數
修改httpd.conf,在裡面設置:
MaxSpareServers n
其中n是一個整數。這樣當空閒進程超過n的時候,apache主進程會殺掉多餘的空閒進程而保持空閒進程在n,節省了系統資源。如果在一個apache非常繁忙的站點調節這個參數才是必要的,但是在任何時候把這個參數調到很大都不是一個好主意。
同時也可以設置:
MinSpareServers n
來限制最少空閒進程數目來加快反應速度。
5、apache如何設置啟動時的子服務進程個數
在httpd.conf裡面設置:
StartServers 5
這樣啟動apache後就有5個空閒子進程等待接受請求。
也可以參考MinSpareServers和MaxSpareServers設置。
6、如何在apache中設置每個連接的最大請求數
在httpd.conf裡面設置:
MaxKeepAliveRequests 100
這樣就能保證在一個連接中,如果同時請求數達到100就不再響應這個連接的新請求,保證了系統資源不會被某個連接大量佔用。但是在實際配置中要求儘量把這個數值調高來獲得較高的系統性能。
7、如何在apache中設置session的持續時間
在apache1.2以上的版本中,可以在httpd.conf裡面設置:
KeepAlive on
KeepAliveTimeout 15
這樣就能限制每個session的保持時間是15秒。session的使用可以使得很多請求都可以通過同一個tcp連接來發送,節約了網絡資源和系統資源。
8、如何使得apache對客戶端進行域名驗證
可以在httpd.conf裡面設置:
HostnameLookups on|off|double
如果是使用on,那麼只有進行一次反查,如果用double,那麼進行反查之後還要進行一次正向解析,只有兩次的結果互相符合才行,而off就是不進行域名驗證。
如果為了安全,建議使用double;為了加快訪問速度,建議使用off。
9、如何使得apache只監聽在特定的ip
修改httpd.conf,在裡面使用
BindAddress 192.168.0.1
這樣就能使得apache只監聽外界對192.168.0.1的http請求。如果使用:
BindAddress *
就表明apache監聽所有網絡接口上的http請求。
當然用防火牆也可以實現。
10、apache中如何限制http請求的消息主體的大小
在httpd.conf裡面設置:
LimitRequestBody n
n是整數,單位是byte。
cgi腳本一般把表單裡面內容作為消息的主體提交給服務器處理,所以現在消息主體的大小在使用cgi的時候很有用。比如使用cgi來上傳文件,如果有設置:
LimitRequestBody 102400
那麼上傳文件超過100k的時候就會報錯。
11、如何修改apache的文檔根目錄
修改httpd.conf裡面的DocumentRoot選項到指定的目錄,比如:
DocumentRoot /www/htdocs
這樣http://localhost/index.html就是對應/www/htdocs/index.html
12、如何修改apache的最大連接數
在httpd.conf中設置:
MaxClients n
n是整數,表示最大連接數,取值範圍在1和256之間,如果要讓apache支持更多的連接數,那麼需要修改源碼中的httpd.h文件,把定義的HARD_SERVER_LIMIT值改大然後再編譯。
13、如何使每個用戶有獨立的cgi-bin目錄
有兩種可選擇的方法:
(1)在Apache配置文件裡面關於public_html的設置後面加入下面的屬性:
ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) /home//cgi-bin/
(2)在Apache配置文件裡面關於public_html的設置裡面加入下面的屬性:
Options ExecCGI
SetHandler cgi-script
14、如何調整Apache的最大進程數
Apache允許為請求開的最大進程數是256,MaxClients的限制是256.如果用戶多了,用戶就只能看到Waiting for
reply....然後等到下一個可用進程的出現。這個最大數,是Apache的程序決定的--它的NT版可以有1024,但Unix版只有256,你可以在src/include/httpd.h中看到:
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#else
#define HARD_SERVER_LIMIT 256
#endif
#endif
你可以把它調到1024,然後再編譯你的系統。
15、如何屏蔽來自某個Internet地址的用戶訪問Apache服務器
可以使用deny和allow來限制訪問,比如要禁止202.202.202.xx網絡的用戶訪問:
order deny,allow
deny from 202.202.202.0/24
16、如何在日誌裡面記錄apache瀏覽器和引用信息
你需要把mod_log_config編譯到你的Apache服務器中,然後使用下面類似的配置:
CustomLog logs/access_log "%h %l %u %t "%r" %s %b "%i"
"%i""
17、如何修改Apache返回的頭部信息
問題分析:當客戶端連接到Apache服務器的時候,Apache一般會返回服務器版本、非缺省模塊等信息,例如:
Server: Apache/1.3.26 (Unix) mod_perl/1.26
解決:
你可以在Apache的配置文件裡面作如下設置讓它返回的關於服務器的信息減少到最少:
ServerTokens Prod
注意:
這樣設置以後Apache還會返回一定的服務器信息,比如:
Server: Apache
但是這個不會對服務器安全產生太多的影響,因為很多掃瞄軟件是掃瞄的時候是不顧你服務器返回的頭部信息的。你如果想把服務器返回的相關信息變成:
Server: It iS a nOnE-aPaCHe Server
那麼你就要去修改源碼了。