Linux 文件句柄导致系统压力测试时出现错误率
创始人
2024-05-10 06:00:51
0

最近,在对一个golang写的获取商品详情信息的接口做压力测试时,tps 单机可以达到1400多,但是发现每当压力测试开始2分钟多时就会出现502或504 错误,整体的错误率在0.5%左右。一开始是怀疑代码写的效率不高,是不是协程开多了或者是有锁占用了。对代码做了一次次的桌前检查,认为不是代码的问题,怀疑是服务器文件句柄开的过低,紧接着就是一波一波的排查。

Linux操作系统中文件句柄数的限制默认是1024(一个进程最多可以接受1024个socket连接),在生产环境系统中这是远远不够的,所以很多应用都需要解除文件句柄数的限制。

通过调用ulimit命令可以看到一个进程能够打开的最大文件句柄数量:
Linux中所有的事物或资源都是以文件的形式存在,比如消息、共享内存、连接等,句柄可以理解为指向这些文件的指针。

对于这些句柄,Linux是有数量限制的,单个进程默认可以打开的句柄数上限,可以用以下命令来查看:

$ ulimit -a

在这里插入图片描述

查看某个进程的句柄数上限,命令是:

$ ulimit -a PID
在这里插入图片描述

单个进程句柄数的修改(系统重启后会恢复默认值)

$ ulimit -n 句柄数
永久修改单个进程句柄数

$ cat >> /etc/security/limits.conf << EOF * soft nofile 102400 * hard nofile 102400 EOF

说明:修改完成后,需要重新打开终端,使用 ulimit -a 查看句柄数

查询系统中指定进程占用的句柄数

$ lsof -n | grep [PID|进程名]| wc -l
查询系系统中进程占用的句柄数

$ lsof -n | awk ‘{print $2}’ | sort | uniq -c | sort -nr | more
文件类型有以下几种:
DIR:表示目录。
CHR:表示字符类型。
BLK:块设备类型。
UNIX: UNIX 域套接字。
FIFO:先进先出 (FIFO) 队列。
IPv4:网际协议 (IP) 套接字。

LINUX对能够打开的文件句柄的数量做了限制。限制是分为三个层面:系统层面,用户层面和进程层面。
如果某个进程打开的文件句柄超过限制,再打开文件就会报错。因此,在编程时,如果进程要占用大量文件句柄的话,
就要看看是否要调整最大可打开的文件句柄数,同时也要注意close释放掉不用的文件句柄。

系统层面

$ cat /proc/sys/fs/file-max
用户层面

$ ulimit -n
进程层面

$ cat /proc/PID/limits

相关内容

热门资讯

“让人想起美国干涉拉美的最黑暗...   当地时间1月3日凌晨,美国悍然对委内瑞拉动武,强行控制马杜罗总统夫妇并将其移送出境。在当天晚些时...
产品定价策略全解析:从成本到利... 引言:掌握定价艺术,提升企业盈利能力在竞争激烈的市场环境中,产品定价是企业经营决策中的关键环节。合理...
商贸企业出口退税未开票收入填报... 出口退税未开票收入填报要点解析随着国际贸易的不断发展,商贸企业出口业务日益频繁。在实际操作中,许多企...
曝光!71款移动应用存在违法违...   国家计算机病毒应急处理中心检测发现71款违法违规收集使用个人信息的移动应用  依据《网络安全法》...
高市早苗被批用“空话”回应美方...   【环球网报道】美军3日凌晨对委内瑞拉发动军事打击,强行抓走总统马杜罗及其夫人,美方行动受国际社会...
美多地民众抗议美国对委内瑞拉实...   中新社纽约1月4日电 (记者 王帆 廖攀)美国纽约、芝加哥、休斯敦等多个城市民众当地时间4日举行...
西藏道路建设成果突出,乡镇、行...   2025年,西藏持续加快推动高等级公路建设,集中力量破解难点、打通堵点;加快推动国省公路建设,G...
一起为梦想奋斗、为幸福打拼   “山海寻梦,不觉其远;前路迢迢,阔步而行。”在二〇二六年新年贺词中,习近平主席殷切寄语:“一起为...
中国经济长期向好的支撑条件和基...   2025年中央经济工作会议,对我国经济发展所处的历史方位和前进方向作出了科学判断和战略部署,全面...
元旦假期近6亿人次出行 “流动...   交通运输部1月4日发布的数据显示:今年元旦假期,全社会跨区域人员流动量近6亿人次,“流动的中国”...