Linux查看端口的鏈接數

1、查看哪些IP鏈接本機node

netstat -anlinux

2、查看TCP鏈接數算法

1)統計80端口鏈接數shell

netstat -nat | grep -i "80" | wc -lbash

2)統計httpd協議鏈接數服務器

ps -ef | grep httpd | wc -l網絡

3)統計已鏈接上的,狀態爲「established併發

netstat -anp | grep ESTABLISHED | wc -ltcp

4)、查出哪一個IP地址鏈接最多,將其封了ide

netstat -anp | grep ESTABLISHED | awk {print $5}|awk -F: {print $1} | sort | uniq -c | sort -r +0n
netstat -anp | grep SYN | awk {print $5}|awk -F: {print $1} | sort | uniq -c | sort -r +0n

實例:

一、查看Apache當前併發訪問數:

netstat -anp | grep ESTABLISHED | wc -l

對比httpd.conf中MaxClients的數字差距多少。

二、查看有多少個進程數:

ps aux | grep httpd | wc -l

三、可使用以下參數查看數據

ps -ef | grep httpd | wc -l
1388

統計httpd進程數,連個請求會啓動一個進程,使用於Apache服務器。

表示Apache可以處理1388個併發請求,這個值Apache可根據負載狀況自動調整。

netstat -ant | grep -i "80" | wc -l
4341

netstat -an會打印系統當前網絡連接狀態,而grep -i "80"是用來提取與80端口有關的鏈接的,wc -l進行鏈接數統計。最終返回的數字就是當前全部80端口的請求總數。

netstat -anp | grep ESTABLISHED | wc -l
376

netstat -an會打印系統當前網絡連接狀態,而grep ESTABLISHED 提取出已創建鏈接的信息。 而後wc -l統計。最終返回的數字就是當前全部80端口的已創建鏈接的總數。

netstat -ant || grep ESTABLISHED | wc -l

可查看全部創建鏈接的詳細記錄

查看Apache的併發請求數及其TCP鏈接狀態:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 8947 等待足夠的時間以確保遠程TCP接收到鏈接中斷請求的確認
FIN_WAIT1 15 等待遠程TCP鏈接中斷請求,或先前的鏈接中斷請求的確認
FIN_WAIT2 1 從遠程TCP等待鏈接中斷請求
ESTABLISHED 55 表明一個打開的鏈接
SYN_RECV 21 再收到和發送一個鏈接請求後等待對方對鏈接請求的確認
CLOSING 2 沒有任何鏈接狀態
LAST_ACK 4 等待原來的發向遠程TCP的鏈接中斷請求的確認

TCP鏈接狀態詳解
LISTEN: 偵聽來自遠方的TCP端口的鏈接請求
SYN-SENT: 再發送鏈接請求後等待匹配的鏈接請求
SYN-RECEIVED:再收到和發送一個鏈接請求後等待對方對鏈接請求的確認
ESTABLISHED: 表明一個打開的鏈接
FIN-WAIT-1: 等待遠程TCP鏈接中斷請求,或先前的鏈接中斷請求的確認
FIN-WAIT-2: 從遠程TCP等待鏈接中斷請求
CLOSE-WAIT: 等待從本地用戶發來的鏈接中斷請求
CLOSING: 等待遠程TCP對鏈接中斷的確認
LAST-ACK: 等待原來的發向遠程TCP的鏈接中斷請求的確認
TIME-WAIT: 等待足夠的時間以確保遠程TCP接收到鏈接中斷請求的確認
CLOSED: 沒有任何鏈接狀態
SYN_RECV表示正在等待處理的請求數;
ESTABLISHED表示正常數據傳輸狀態;
TIME_WAIT表示處理完畢,等待超時結束的請求數。

3、文件描述符
ulimit -a
同時打開的文件描述符越多,內存開銷就越大
一個經驗算法是 256個fd 需4M內存。例如8G內存,81024/4256=524288。
查看進程啓動、運行的時間等命令

`ps -eo pid,lstart,etime,cmd | grep node``

lsof|awk '{print $2}'|sort|uniq -c|sort -nr|head -n 20 
netstat -tan|awk '$1~/tcp/{print $NF}'|sort|uniq -c|sort -nr 查看當前鏈接情況

lsof -d pid 查看文件描述符
修改句柄數
vi /etc/security/limits.conf 添加

*  soft  nofile  100000

*  hard  nofile  100000

命令行執行

echo "*    hard memlock unlimited" >>/etc/security/limits.conf
echo "*    soft memlock unlimited" >>/etc/security/limits.conf
echo "*    soft nofile 1000000" >>/etc/security/limits.conf
echo "*    hard nofile 1000000" >>/etc/security/limits.conf

生效
sysctl -p

使用ansible一鍵腳本下發

more /opt/shell/yaml/install_system.yaml 
- hosts: "{{ host }}"
  become: yes
  become_method: sudo 
  tasks:
    - name: "security-system"
      script: "/opt/shell/soft/system/sysctl.sh"

腳本內容:

more /opt/shell/soft/system/sysctl.sh 
#!/bin/bash
set -m
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0
echo "*    hard memlock unlimited" >>/etc/security/limits.conf
echo "*    soft memlock unlimited" >>/etc/security/limits.conf
echo "*    soft nofile 1000000" >>/etc/security/limits.conf
echo "*    hard nofile 1000000" >>/etc/security/limits.conf
sysctl -p

修改運行中的程序的句柄數限制:(linux 內核版本 2.6.36 之後)prlimit --pid 1409 --nofile=10240:20480

相關文章
相關標籤/搜索