并发压测遇到的问题

问题

socket too many open files
在这里插入图片描述
进程打开一个文件 ,但是现在进程打开的句柄已经达到了上限,已经无法打开了

查看进程 open file

lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

查看 open files 配置

ulimit -a  #查看当前的

在这里插入图片描述

修改open file 配置

ulimit -n 1024  # 修改为1024  临时
vi /etc/security/limits.conf  # 修改配置文件

满足并发打开的数量就不会出现该问题了

why

在 Linux 平台上运行的进程都会从系统资源申请一定数量的句柄,
而且系统控制了进程能够申请的最大句柄数量。
用户程序如果不及时释放无用的句柄,将会引起句柄泄露,
从而可能造成申请资源失败,导致系统文件句柄用光连接不能建立

在 Linux 环境中,任何事物都是用文件来表示,
设备是文件,目录是文件**,socket 也是文件**。
用来表示所处理对象的接口和唯一接口就是文件。

应用程序在读 / 写一个文件时,首先需要打开这个文件,
打开的过程其实质就是在进程与文件之间建立起连接,
句柄的作用就是唯一标识此连接
此后对文件的读 / 写时,目标文件就由这个句柄作为代表。
最后关闭文件其实就是释放这个句柄的过程,使得进程与文件之间的连接断开。

lsof # (list open files)是一个列出当前系统打开文件的工

lsof 输出各列信息的意义如下:

COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如 cwd、txt 等
TYPE:文件类型,如 DIR、REG 等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

https://www.jianshu.com/p/382c5b62f693


在这里插入图片描述

问题

connect cannot assig requested address

说到这里就不得不说下tcp 三次握手了
建立tcp 客户端会分配随机端口
但是端口有限,
断开后还有延迟 WAIT TIME
并发数量上来之后,就会出现该问题
多个http 过来之后,tcp连接无法建立

查看端口可用范围

sysctl net.ipv4.ip_local_port_range

修改配置

# 临时修改
sysctl -w net.ipv4.tcp_fin_timeout=1 # 修改系統默认的 TIMEOUT 时间
# sysctl -w net.ipv4.tcp_timestamps=1
sysctl -w net.ipv4.tcp_tw_recycle=1 #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
sysctl -w net.ipv4.tcp_tw_reuse = 1 #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
vi /etc/sysctl.conf # 修改配置文件
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
/sbin/sysctl -p

why

tcp_v4_connect的作用主要是完成TCP连接三次握手中的第一个握手,
即向服务端发送SYNC = 1和一个32位的序号的连接请求包。
要发送SYNC请求包,按照TCP/IP协议,就必须有源IP地址和端口,源IP地址的选择和路由相关,需要查询路由表,
在ip_route_connect中实现,源端口的选择在__inet_hash_connect中实现,而且如果找不到一个可用的端口,
这个函数会返回-EADDRNOTAVAIL,因此基本上可以确定是这个函数返回错误导致connect失败;

TCP

在这里插入图片描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

https://www.jianshu.com/p/51a953b789a4
https://www.cnblogs.com/djiankuo/p/5956606.html
https://www.bbsmax.com/A/RnJWbwoYzq/
https://blog.csdn.net/wenshuangzhu/article/details/44060901?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

猜你喜欢

转载自blog.csdn.net/java_sparrow/article/details/105867471