zoukankan      html  css  js  c++  java
  • No buffer space available错误解决方案

    生产环境,突然爆发问题,网络正常,但是报网络不通错误,重启tomcat立刻好使

    开始以为是tomcat的问题,调查了很久,后来加上堆栈日志才发现

    简单来说,就是1-4分钟之内,使用了大量的http请求,达到了操作系统限制的最大值,所以许多请求处于wait状态,导致程序错误

    原代码,httpClient 未关闭

    finally {
                if (is != null) {
                    is.close();
                }
                if (postMethod != null) {
                    postMethod.releaseConnection();
                }
            }

    新代码,httpClient正确关闭

    finally {
                if (is != null) {
                    try{
                    is.close();
                    }catch(Exception e){
                        
                    }
                }
                if(postMethod!=null)
                    postMethod.releaseConnection();
                if(httpClient!=null)
                    httpClient.getHttpConnectionManager().closeIdleConnections(0);
            }

    改完这个没好使...[2018/10/18更新]

    继续查资料,发现与操作系统有关,此程序所在系统是windowsServer2003 32位

    修改注册表

    HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters

    新建 DWORD 类型的注册表项,命名为:MaxUserPort

    值数据: 60000(用十进制的格式录入进去,此值的有效范围为5000-65534)

    新建 DWORD 类型的注册表项,命名为:TCPTimedWaitDelay

    值数据: 30(用十进制的格式录入进去,TIME_WAIT的自动断开时间,默认为4分钟)

    HKEY_LOCAL_MACHINE/CurrentControlSet/Services/Tcpip/Parameters下的以下三个参数: 
    KeepAliveInterval,设置其值为1000(用十进制的格式录入进去)
    KeepAliveTime,设置其值为300000(单位为毫秒,300000代表5分钟) (用十进制的格式录入进去)
    TcpMaxDataRetransmissions,设置其值为5(用十进制的格式录入进去)

    祝开发顺利!

  • 相关阅读:
    redis学习--Hashes数据类型
    redis学习--String数据类型。
    redis学习一
    redis命令大全
    MongoDB学习笔记(索引)
    ECharts的使用(经典博客)
    php中五种常见的设计模式
    实用的借口
    php中socket的使用
    jquery仿凡客诚品图片切换的效果实例代码
  • 原文地址:https://www.cnblogs.com/gode/p/9770831.html
Copyright © 2011-2022 走看看