Linux 文件句柄导致系统压力测试时出现错误率

news2025/1/19 14:37:18

最近,在对一个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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SAP Hana】SAP HANA SQL 进阶教程

SAP HANA SQL 进阶教程5、HANA SQL 进阶教程&#xff08;1&#xff09;Databases&#xff08;2&#xff09;User & Role&#xff08;3&#xff09;Schemas&#xff08;4&#xff09;Tables&#xff08;5&#xff09;Table Index&#xff08;6&#xff09;Table Partitions&…

于仕琪C/C++ 学习笔记

C函数指针有哪几类&#xff1f;函数指针、lambda、仿函数对象分别是什么&#xff1f;如何利用谓词对给定容器进行自定义排序&#xff1f;传递引用和传递值的区别&#xff1f;传递常引用和传递引用之间的区别&#xff1f;传递右值引用和传递引用之 间的区别&#xff1f;函数对象…

【PWA学习】6. 使用 Service Worker 进行后台同步

引言 你一定遇到过类似这样的场景&#xff1a; 当用手机填写完一张信息表单点击"提交"时&#xff0c;恰好手机网络很差或没有网络&#xff0c;这时候只能盯着手机看着旋转的小圆圈。经过长时间等待后依然没有结果&#xff0c;这时候关闭浏览器&#xff0c;请求也被终…

红外传感器使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、红外传感器&#xff1f;二、使用步骤1.确保驱动已经安装2.安装GPIO工具3.安装GPIO的Python支持4.Python3代码5.测试结果总结前言 最近在做一个项目需要用到…

Linux命令学习

1、linux目录结构 linux目录结构是一个树状结构 当我们直接打开ubuntu的控制台&#xff0c;进入的是 home 目录下的创建的用户&#xff0c;这里是真正的 家 目录 或者在安装 ssh 服务器之后可以直接通过 windows 命令行 访问 ubuntu 的ssh服务器&#xff0c;进入的是 home 目录…

【规范】我们是怎么做MySQL数据库安全管理的?

一、背景说明 MySQL作为数据库管理系统&#xff0c;里面保存企业的重要业务数据&#xff0c;因此保证数据库的安全性非常重要&#xff0c;如何保证数据库的安全性呢&#xff1f;用户和用户权限管理是一个很重要的方面。 MySQL数据库具有非常高的安全性&#xff0c;为我们提供…

Vue 2 即将成为过去

自从 2020 年 9 月 18 日 Vue 3 正式发布以来&#xff0c;已经有两年多时间了&#xff0c;终于在 2022 年 2 月 7 日 Vue 作者发布了一则消息&#xff1a;Vue 3 将成为新的默认版本。与此同时&#xff0c;Vue 相关官方周边的核心库 latest 发布标签将指向其 Vue 3 的兼容版本。…

从0到1完成一个Vue后台管理项目(二十一、网上地图资源、树形控件及路由权限分析、路由守卫)

往期 从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;二、使用element-ui&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;三、使用SCSS/LESS&#xff0c;安装图标库&#xff09; 从0到1完成一个Vu…

JAVA SE 详解类和对象

类和对象 面向对象的初步认知 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。 面 向对象是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。用面向…

ArcGIS基础实验操作100例--实验79分区统计降雨量

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验79 分区统计降雨量 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&am…

【VUE2-02】vue2的指令和vue2的缺点

文章目录一、vue条件渲染 v-if二、vue循环渲染 v-for三、vue的事件 v-on四、vue的双向绑定 v-model五、VUE2的缺点5.1 vue底层原理解决方案在上节 【VUE2-01】vue2的起步,中写hello world&#xff01;例子的时候使用了一个指令 v-bind绑定元素属性一、vue条件渲染 v-if v-if控…

米筐量化终端是什么?

米筐量化终端大家应该也能想象到是应用的终端&#xff0c;是系统执行的终端环节&#xff0c;如果是用在量化方面&#xff0c;那它就是策略定制的终端&#xff0c;是方便投资者输入量化策略执行出来发最终优质目的&#xff0c;精确到细分股票的账户成交量&#xff0c;股价以及融…

java8 第七章-----多线程

7.1、线程基本知识 进程与线程&#xff1a; 进程&#xff08;Process&#xff09;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础。在早期面向进程设计的计算机结构中&#xff0c;进程是程序的基本执行实体&#xff1b;在当代面向线程设计的计算机结构…

cobaltstrike的安装与基础使用

数据来源 本文仅用于信息安全学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若观众因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与本人无关。 Cobalt Strike是什么? Cobalt Strike&#xff08;简称CS&#xff09;是一款团队作战渗…

Python学习笔记——列表

Python列表函数&方法函数&#xff1a;len(list)&#xff1a;列表元素个数max(list)&#xff1a;返回列表元素最大值min(list)&#xff1a;返回列表元素最小值list(seq)&#xff1a;将元组转换为列表方法list.append(obj)&#xff1a;在列表末尾添加新的对象list.count(obj)…

字典树总结

字典树 一、概念 字典树 (Trie) 是一种用于实现字符串快速存储和检索的多叉树结构&#xff1b; Trie 的每个节点都拥有若干个字符指针&#xff0c;若在插入或检索字符串时扫描到一个字符 ccc &#xff0c;就沿着当前节点的 ccc 字符指针&#xff0c;走向该指针指向的节&…

支持向量机(SVM)入门(六,解决遗留问题)

但也出现了如下结果&#xff0c;看来任务没完没了&#xff08;svm深似海&#xff1f;&#xff09;&#xff0c;还得下功夫&#xff1a;前面我们的支持向量机到此便止步了&#xff0c;一晃两年&#xff0c;这几天有空&#xff0c;顺便研究了一下&#xff0c;问题有进展&#xff…

基于yolov5-v7.0开发构建汽车车损实例分割检测识别分析系统

在之前的文章中我们已经做了很多基于yolov5完成实例分割的项目&#xff0c;感兴趣的话可以自行移步阅读&#xff1a;《基于YOLOv5-v7.0的药片污染、缺损裂痕实例分割检测识别分析系统》《基于yolov5-v7.0开发构建裸土实例分割检测识别模型》《基于yolov5-v7.0开发实践实例分割模…

NSThead的进阶使用和简单探讨

概述 NSThread类是一个继承于NSObjct类的轻量级类。一个NSThread对象就代表一个线程。它需要管理线程的生命周期、同步、加锁等问题&#xff0c;因此会产生一定的性能开销。 使用NSThread类可以在特定的线程中被调用某个OC方法。当需要执行一个冗长的任务&#xff0c;并且不想…

文件minio进阶 分页查询

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、minio使用二、代码1.mino版本是最新的,那么pom中也要最新的2. 部分代码总结前言 就是现在通过minio管理文件,然后不需要其他信息,所以我也就没有用传统方式…