解决接口调用报错newSocketStream(..)failed:Too many open files问题

 更新时间:2024年07月10日 09:33:59   作者:.猫的树  
这篇文章主要介绍了解决接口调用报错newSocketStream(..)failed:Too many open files问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题描述

在调用微服务接口时,出现报错

newSocketStream(..) failed: Too many open files

具体错误信息如下:

原因分析

报错字面意思是程序打开的文件数过多

程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。

第一时间想到的是程序异常报错,进程未正常结束或者请求次数异常增大,但是实际上这些情况并未发生。

接着只能求助于网上的大神,查询问题,基本上都是说句柄数超出系统限制

解决方案

于是按照网上的解决方法操作:

  • 先查看进程描述符ulimit -a
  • 查看当前系统打开的文件数量lsof | wc -l
  • 查看某一进程的打开文件数量lsof -p pid | wc -l
  • 增大允许打开的文件数ulimit -n 1024000

增大允许打开的文件数:

1.临时(重启后失效): ulimit -n 1024000(非root用户限制到4096)

2.永久生效(需要重启)vim /etc/security/limits.conf #在最后加入 * soft nofile 1024000 * hard nofile 1024000

在查看当前系统打开的文件数量,出现问题

出现这个问题的情况 ,一般有两种:

  • 系统中有容器在运行该进程
  • 启动进程后,删除了相关进程的文件,导致进程异常

到这里我其实已经发现问题似乎不是这个,再次查询程序进程打开文件数量,发现只有5个,确定不是应用程序文件打开过多的问题。

网上查询也实在没有啥好的解决方法(重启程序也试过了)

后面我查询运行程序的时候,发现了用户问题,有的是root启动的,有的又是非root用户

而报错的程序就是root用户启动的,于是怀着试一试的心态,将程序改为非root用户启动,结果接口访问成功了!!!!

总结

虽然问题解决了,但是我也是云里雾里的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中连接数据库方式详细步骤记录

    Java中连接数据库方式详细步骤记录

    这篇文章主要介绍了Java中连接数据库方式的详细步骤,包括添加依赖、建立连接、执行SQL语句、处理结果集和关闭连接,还讨论了数据库连接池的使用,需要的朋友可以参考下
    2025-01-01
  • Mybatis如何通过出入Map参数作为条件进行查询

    Mybatis如何通过出入Map参数作为条件进行查询

    这篇文章主要介绍了Mybatis如何通过出入Map参数作为条件进行查询,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • java实现多线程卖票功能

    java实现多线程卖票功能

    这篇文章主要为大家详细介绍了java实现多线程卖票功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 浅析java中String类型中“==”与“equal”的区别

    浅析java中String类型中“==”与“equal”的区别

    这篇文章主要介绍了浅析java中String类型中“==”与“equal”的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 关于SpingMVC的<context:component-scan>包扫描踩坑记录

    关于SpingMVC的<context:component-scan>包扫描踩坑记录

    这篇文章主要介绍了关于SpingMVC的<context:component-scan>包扫描踩坑记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java使用NIO优化IO实现文件上传下载功能

    Java使用NIO优化IO实现文件上传下载功能

    IO 是基于流来读取的,而NIO则是基于块读取,面向流 的 I/O 系统一次一个字节地处理数据,这篇文章主要介绍了Java使用NIO优化IO实现文件上传下载功能,需要的朋友可以参考下
    2022-07-07
  • SpringBoot整合Mybatis简单实现增删改查

    SpringBoot整合Mybatis简单实现增删改查

    这篇文章主要介绍了SpringBoot整合Mybatis简单实现增删改查,文章为围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 解决@JsonIgnore的使用以及自己踩坑

    解决@JsonIgnore的使用以及自己踩坑

    这篇文章主要介绍了解决@JsonIgnore的使用以及自己踩坑,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java之SpringBoot实现基本增删改查(前后端分离版)

    Java之SpringBoot实现基本增删改查(前后端分离版)

    这篇文章主要介绍了Java中SpringBoot如何实现基本的增删改查,前后端分离版,没有和前端进行联系,感兴趣的小伙伴可以借鉴阅读本文
    2023-03-03
  • MyBatis中调用存储过程和函数的实现示例

    MyBatis中调用存储过程和函数的实现示例

    在MyBatis中调用存储过程和函数是一个相对高级的特性,本文主要介绍了MyBatis中调用存储过程和函数的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07

最新评论