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