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(用十进制的格式录入进去)

    祝开发顺利!

  • 相关阅读:
    深入了解css的行高Line Height属性
    Kafka消息队列
    架构图
    清理肠道好方法
    维特根斯坦
    ES查询DSL大于小于写法
    python虚拟环境
    Dockerfile
    flask基本使用
    泛型类多个类型参数的定义
  • 原文地址:https://www.cnblogs.com/gode/p/9770831.html
Copyright © 2011-2022 走看看