1)統(tǒng)計80端口連接數(shù)
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站建設、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的濟陽網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
2)統(tǒng)計httpd協(xié)議連接數(shù)
3)、統(tǒng)計已連接上的,狀態(tài)為“established
4)、查出哪個IP地址連接最多,將其封了.
1、查看apache當前并發(fā)訪問數(shù):
對比httpd.conf中MaxClients的數(shù)字差距多少。
2、查看有多少個進程數(shù):
3、可以使用如下參數(shù)查看數(shù)據(jù)
統(tǒng)計httpd進程數(shù),連個請求會啟動一個進程,使用于Apache服務器。
表示Apache能夠處理1388個并發(fā)請求,這個值Apache可根據(jù)負載情況自動調整。
4341
netstat -an會打印系統(tǒng)當前網(wǎng)絡鏈接狀態(tài),而grep -i "80"是用來提取與80端口有關的連接的,wc -l進行連接數(shù)統(tǒng)計。
最終返回的數(shù)字就是當前所有80端口的請求總數(shù)。
netstat -an會打印系統(tǒng)當前網(wǎng)絡鏈接狀態(tài),而grep ESTABLISHED 提取出已建立連接的信息。 然后wc -l統(tǒng)計。
最終返回的數(shù)字就是當前所有80端口的已建立連接的總數(shù)。
查看Apache的并發(fā)請求數(shù)及其TCP連接狀態(tài):
TIME_WAIT 8947 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
FIN_WAIT1 15 等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN_WAIT2 1 從遠程TCP等待連接中斷請求
ESTABLISHED 55 代表一個打開的連接
SYN_RECV 21 再收到和發(fā)送一個連接請求后等待對方對連接請求的確認
CLOSING 2 沒有任何連接狀態(tài)
LAST_ACK 4 等待原來的發(fā)向遠程TCP的連接中斷請求的確認
TCP連接狀態(tài)詳解
LISTEN: 偵聽來自遠方的TCP端口的連接請求
SYN-SENT: 再發(fā)送連接請求后等待匹配的連接請求
SYN-RECEIVED:再收到和發(fā)送一個連接請求后等待對方對連接請求的確認
ESTABLISHED: 代表一個打開的連接
FIN-WAIT-1: 等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN-WAIT-2: 從遠程TCP等待連接中斷請求
CLOSE-WAIT: 等待從本地用戶發(fā)來的連接中斷請求
CLOSING: 等待遠程TCP對連接中斷的確認
LAST-ACK: 等待原來的發(fā)向遠程TCP的連接中斷請求的確認
TIME-WAIT: 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
CLOSED: 沒有任何連接狀態(tài)
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的
SYN_RECV表示正在等待處理的請求數(shù);
ESTABLISHED表示正常數(shù)據(jù)傳輸狀態(tài);
TIME_WAIT表示處理完畢,等待超時結束的請求數(shù)。
查看Apache并發(fā)請求數(shù)及其TCP連接狀態(tài)
查看httpd進程數(shù)(即prefork模式下Apache能夠處理的并發(fā)請求數(shù)):
返回結果示例:
1388
表示Apache能夠處理1388個并發(fā)請求,這個值Apache可根據(jù)負載情況自動調整,我這組服務器中每臺的峰值曾達到過2002。
查看Apache的并發(fā)請求數(shù)及其TCP連接狀態(tài):
返回結果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待處理的請求數(shù);ESTABLISHED表示正常數(shù)據(jù)傳輸狀態(tài);TIME_WAIT表示處理完畢,等待超時結束的請求數(shù)。
狀態(tài):描述
CLOSED:無連接是活動 的或正在進行
LISTEN:服務器在等待進入呼叫
SYN_RECV:一個連接請求已經(jīng)到達,等待確認
SYN_SENT:應用已經(jīng)開始,打開一個連接
ESTABLISHED:正常數(shù)據(jù)傳輸狀態(tài)
FIN_WAIT1:應用說它已經(jīng)完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
vim /etc/sysctl.conf
編輯文件,加入以下內(nèi)容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后執(zhí)行 /sbin/sysctl -p 讓參數(shù)生效。
net.ipv4.tcp_syncookies = 1 表示開啟SYN cookies。當出現(xiàn)SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
net.ipv4.tcp_fin_timeout 修改系統(tǒng)默認的 TIMEOUT 時間
客戶端與服務器端建立TCP/IP連接后關閉SOCKET后,服務器端連接的端口
狀態(tài)為TIME_WAIT
是不是所有執(zhí)行主動關閉的socket都會進入TIME_WAIT狀態(tài)呢?
有沒有什么情況使主動關閉的socket直接進入CLOSED狀態(tài)呢?
主動關閉的一方在發(fā)送最后一個 ack 后
就會進入 TIME_WAIT 狀態(tài) 停留2MSL(max segment lifetime)時間
這個是TCP/IP必不可少的,也就是“解決”不了的。
也就是TCP/IP設計者本來是這么設計的
主要有兩個原因
1。防止上一次連接中的包,迷路后重新出現(xiàn),影響新連接
(經(jīng)過2MSL,上一次連接中所有的重復包都會消失)
2。可靠的關閉TCP連接
在主動關閉方發(fā)送的最后一個 ack(fin) ,有可能丟失,這時被動方會重新發(fā)
fin, 如果這時主動方處于 CLOSED 狀態(tài) ,就會響應 rst 而不是 ack。所以
主動方要處于 TIME_WAIT 狀態(tài),而不能是 CLOSED 。
TIME_WAIT 并不會占用很大資源的,除非受到攻擊。
還有,如果一方 send 或 recv 超時,就會直接進入 CLOSED 狀態(tài)
如何合理設置apache httpd的最大連接數(shù)?
手頭有一個網(wǎng)站在線人數(shù)增多,訪問時很慢。初步認為是服務器資源不足了,但經(jīng)反復測試,一旦連接上,不斷點擊同一個頁面上不同的鏈接,都能迅速打開,這種現(xiàn)象就是說明apache最大連接數(shù)已經(jīng)滿了,新的訪客只能排隊等待有空閑的鏈接,而如果一旦連接上,在keeyalive 的存活時間內(nèi)(KeepAliveTimeout,默認5秒)都不用重新打開連接,因此解決的方法就是加大apache的最大連接數(shù)。
1.在哪里設置?
apache 2.24,使用默認配置(FreeBSD 默認不加載自定義MPM配置),默認最大連接數(shù)是250
在/usr/local/etc/apache22/httpd.conf中加載MPM配置(去掉前面的注釋):
Include etc/apache22/extra/httpd-mpm.conf
可見的MPM配置在/usr/local/etc/apache22/extra/httpd-mpm.conf,但里面根據(jù)httpd的工作模式分了很多塊,哪一部才是當前httpd的工作模式呢?可通過執(zhí)行 apachectl -l 來查看:
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
看到prefork 字眼,因此可見當前httpd應該是工作在prefork模式,prefork模式的默認配置是:
IfModule mpm_prefork_module
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
/IfModule
2.要加到多少?
連接數(shù)理論上當然是支持越大越好,但要在服務器的能力范圍內(nèi),這跟服務器的CPU、內(nèi)存、帶寬等都有關系。
查看當前的連接數(shù)可以用:
ps aux | grep httpd | wc -l
或:
pgrep httpd|wc -l
計算httpd占用內(nèi)存的平均數(shù):
ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'
由于基本都是靜態(tài)頁面,CPU消耗很低,每進程占用內(nèi)存也不算多,大約200K。
服務器內(nèi)存有2G,除去常規(guī)啟動的服務大約需要500M(保守估計),還剩1.5G可用,那么理論上可以支持1.5 1024 1024*1024/200000 = 8053.06368
約8K個進程,支持2W人同時訪問應該是沒有問題的(能保證其中8K的人訪問很快,其他的可能需要等待1、2秒才能連上,而一旦連上就會很流暢)
控制最大連接數(shù)的MaxClients ,因此可以嘗試配置為:
IfModule mpm_prefork_module
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 5500
MaxClients 5000
MaxRequestsPerChild 100
/IfModule
注意,MaxClients默認最大為250,若要超過這個值就要顯式設置ServerLimit,且ServerLimit要放在MaxClients之前,值要不小于MaxClients,不然重啟httpd時會有提示。
重啟httpd后,通過反復執(zhí)行pgrep httpd|wc -l 來觀察連接數(shù),可以看到連接數(shù)在達到MaxClients的設值后不再增加,但此時訪問網(wǎng)站也很流暢,那就不用貪心再設置更高的值了,不然以后如果網(wǎng)站訪問突增不小心就會耗光服務器內(nèi)存,可根據(jù)以后訪問壓力趨勢及內(nèi)存的占用變化再逐漸調整,直到找到一個最優(yōu)的設置值。
(MaxRequestsPerChild不能設置為0,可能會因內(nèi)存泄露導致服務器崩潰)
更佳最大值計算的公式:
apache_max_process_with_good_perfermance (total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5
附:
實時檢測HTTPD連接數(shù):
watch -n 1 -d "pgrep httpd|wc -l"
1、查看Web服務器(Nginx Apache)的并發(fā)請求數(shù)及其TCP連接狀態(tài):
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}
netstat -n|grep ^tcp|awk '{print $NF}'|sort -nr|uniq -c
或者:
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}
返回結果一般如下:
LAST_ACK 5 (正在等待處理的請求數(shù))
SYN_RECV 30
ESTABLISHED 1597 (正常數(shù)據(jù)傳輸狀態(tài))
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (處理完畢,等待超時結束的請求數(shù))
其他參數(shù)說明:
CLOSED:無連接是活動的或正在進行
LISTEN:服務器在等待進入呼叫
SYN_RECV:一個連接請求已經(jīng)到達,等待確認
SYN_SENT:應用已經(jīng)開始,打開一個連接
ESTABLISHED:正常數(shù)據(jù)傳輸狀態(tài)
FIN_WAIT1:應用說它已經(jīng)完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
2、查看Nginx運行進程數(shù)
ps -ef | grep nginx | wc -l
返回的數(shù)字就是nginx的運行進程數(shù),如果是apache則執(zhí)行
ps -ef | grep httpd | wc -l
3、查看Web服務器進程連接數(shù):
netstat -antp | grep 80 | grep ESTABLISHED -c
linux下,可以通過natstat命令來查看端口的連接狀況,比如連接數(shù)
例如,查看9090端口的連接狀況:
查看某個端口的連接數(shù)
netstat -nat | grep -iw "9090" | wc -l
查看連接狀況
netstat -nat | grep -iw "9090"
很多時候我們會遇到服務器遭受 cc 或 syn 等攻擊,如果發(fā)現(xiàn)自己的網(wǎng)站訪問異常緩慢且流量異常??梢允褂孟到y(tǒng)內(nèi)置 netstat 命令 簡單判斷一下服務器是否被攻擊。常用的 netstat 命令
該命令將顯示所有活動的網(wǎng)絡連接。
查看同時連接到哪個服務器 IP 比較多,cc 攻擊用。使用雙網(wǎng)卡或多網(wǎng)卡可用。
查看哪些 IP 連接到服務器連接多,可以查看連接異常 IP。
顯示所有 80 端口的網(wǎng)絡連接并排序。這里的 80 端口是 http 端口,所以可以用來監(jiān)控 web 服務。如果看到同一個 IP 有大量連接的話就可以判定單點流量攻擊了。
這個命令可以查找出當前服務器有多少個活動的 SYNC_REC 連接。正常來說這個值很小,最好小于 5。 當有 Dos 攻擊或的時候,這個值相當?shù)母摺5怯行┎l(fā)很高的服務器,這個值確實是很高,因此很高并不能說明一定被攻擊。
列出所有連接過的 IP 地址。
列出所有發(fā)送 SYN_REC 連接節(jié)點的 IP 地址。
使用 netstat 命令計算每個主機連接到本機的連接數(shù)。
列出所有連接到本機的 UDP 或者 TCP 連接的 IP 數(shù)量。
檢查 ESTABLISHED 連接并且列出每個 IP 地址的連接數(shù)量。
列出所有連接到本機 80 端口的 IP 地址和其連接數(shù)。80 端口一般是用來處理 HTTP 網(wǎng)頁請求。
顯示連接 80 端口前 10 的 ip,并顯示每個 IP 的連接數(shù)。這里的 80 端口是 http 端口,所以可以用來監(jiān)控 web 服務。如果看到同一個 IP 有大量連接的話就可以判定單點流量攻擊了。
分享文章:linux查連接數(shù)命令,linux查看當前連接數(shù)
分享網(wǎng)址:http://chinadenli.net/article24/dssgcce.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計、面包屑導航、定制開發(fā)、Google、網(wǎng)站策劃、網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)