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