`
duanfei
  • 浏览: 732308 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

转:java.net.SocketException: Too many open files解决方法

 
阅读更多
最近随着网站访问量的提高把web服务器移到linux下了,在移服务器的第二天,tomcat频繁的报

java.net.SocketException: Too many open files错误,错误日志达到了100多兆,郁闷了,windows上运行了很长

时间都没出现这个错误,后来才知道linux对进程的打开文件数是有限制的。

用命令
ulimit -a
查看

[root@test security]# ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) 7168
virtual memory        (kbytes, -v) unlimited
[root@test security]#
通过以上命令,我们可以看到open files 的最大数为1024

对于并发量比较大的网站这个限制是有些捉襟见肘的,所以我通过这个命令

ulimit -n 4096

把打开文件数的上限设为了4096,这下好了,项目又稳定了

没想到过两天后又重新出这个错误了,郁闷,两个小时报一次,报之后就挂掉了

在重新用ulimit -a查看,发现open files (-n) 1024 又变回了1024了,

报这个错误就在我那次登陆更新之后又报的,原来ulimit -n 4096 命令只能临时的改变open files 的值,当

重新登陆后又会恢复,所以需要永久设置open files 的值才行啊,

用ulimit -n 修改open files 总是不能保持。所以用下面一个简单的办法更好些。
修改
/etc/security/limits.conf
添加如下一行:

* - nofile 1006154

修改/etc/pam.d/login添加如下一行

session required /lib/security/pam_limits.so

这次永久修改后程序就再没那个问题了,一直稳定运行。

另外遇到这个问题这后还需要检查我们的程序对于操作io的流是否在操作完之后关闭,这才是从最更本上的解决。

分享到:
评论

相关推荐

    JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES解决方法

    JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES解决方法 JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES错误是一种常见的网络编程错误,发生在Java应用程序中, especialmente 在 Linux 操作系统中。该错误的出现是...

    在Win7系统下抛出java.net.SocketException的解决办法

    ### 在Win7系统下抛出java.net.SocketException的解决办法 #### 问题背景及原因分析 在使用MyEclipse开发工具结合JBoss服务器进行项目开发的过程中,遇到一个常见但令人头疼的问题:当启动JBoss服务器时,控制台...

    java.net.SocketException: No route to host 异常原因

    NULL 博文链接:https://zhoudan241.iteye.com/blog/1432014

    java.net.SocketException: Connection reset 解决方法

    Java中的`java.net.SocketException: Connection reset`是一个常见的网络编程错误,通常表示在TCP/IP通信过程中,连接突然中断。这个异常可能在客户端或服务器端发生,通常与数据传输的异常中断有关。 首先,我们来...

    http接口调用报错.rar

    接口调用报错:java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory

    connection reset解决方案(亲测可用).md

    connection reset解决方案(亲测可用).md

    Linux下打开的文件过多错误

    Linux下运行tomcat或者was出现java.net.SocketException: 打开的文件过多错误 tomcat报“too many open files”的错误,解决办法如下:

    Too many open files 解决方法

    在将Web服务器从Windows环境迁移到Linux环境后,遇到了一个常见的问题:“java.net.SocketException: Too many open files”。这种异常通常发生在高并发环境下,例如网站访问量显著增加时。在Windows环境中长时间...

    Java Socket常见异常处理

    4. **java.net.SocketException: (Connection reset 或 Connect reset by peer: Socket write error)** 这两种异常都表示连接已断开。可能的原因是一端关闭了Socket,而另一端仍在尝试读写。处理这类异常需要检测到...

    java网络编程示例

    import java.net.SocketException; public class UDPServer { public static void main(String[] args) { try { byte [] buffer = new byte[1024]; DatagramSocket socket = new DatagramSocket(4444); ...

    fastdfs使用java

    在Java中使用FastDFS,首先需要在项目中引入FastDFS的Java客户端库。配置client.conf文件,设置tracker服务器的地址和其他相关参数。接着创建FastdfsClient和FastdfsUtil类,前者用于与FastDFS服务器通信,后者封装...

    C#socket通讯两个最经典错误解决方案

    ### C# Socket 通信经典错误解决方案 #### 经典错误一:无法访问已释放的对象。对象名:“System.Net.Sockets.Socket” **问题现场** 在实际编程过程中,有时会出现以下异常:“无法访问已释放的对象。对象名:...

    ip6-java.zip

    7. **配置和属性**:Java系统属性如`java.net.preferIPv6Addresses`和`java.net.preferIPv4Stack`可以用来配置系统首选的IP版本。 8. **异常处理**:处理网络编程中常见的异常,如`UnknownHostException`, `...

    Google I/O 2013推荐Android 网络通信框架Volley

    1. 初始化RequestQueue:在Application或Activity的onCreate方法中创建RequestQueue实例。 ```java RequestQueue queue = Volley.newRequestQueue(this); ``` 2. 创建Request对象:根据实际需求创建对应的Request...

    Java实现modbus tcp协议数据读写,项目内包含modbus slave仿真软件

    例如,你可以使用`ModbusTCPMaster`类建立连接,并调用其`readCoils`或`writeRegister`等方法来读取或写入数据。 其次,modbus4j是另一个强大的Java Modbus库,它支持TCP、RTU以及ASCII模式。modbus4j的设计目标是...

    Ice-3.7.4.msi for windows版

    Caused by: java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574) at ...

    Windows10/11 USB驱动

    System.Net.Sockets.SocketException (10061): 由于目标计算机积极拒绝,无法连接。 at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken ...

    ssh2必须的包(这是第二部分)

    4. **mysql-connector-java-5.1.10-bin.jar** - MySQL数据库的Java驱动,用于连接Java应用程序与MySQL数据库。在SSH2场景中,可能用于存储和检索用户认证信息或其他系统配置数据。 5. **javassist-3.12.0.GA.jar** ...

    如何解决线程太多导致java socket连接池出现的问题

    3. 错误信息:当Socket连接池出现问题时,可能会出现错误信息,如"java.net.SocketException: No buffer space available (maximum connections reached?): listen failed"。 解决方法 要解决线程太多导致Socket...

Global site tag (gtag.js) - Google Analytics