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

相关文章
相关标签/搜索