zoukankan      html  css  js  c++  java
  • 用httpClient的PostMethot频繁发送数据,抛出Too many open files

    在工作过程中,用httpclient去压测一个web api,发现压一小段时间就出现了Too many open files。
    实际上,HttpClient建立Socket时 ,post.releaseConnection()并没有真正关闭连接,而是将该连接提交给 MultiThreadedHttpConnectionManager,等待复用。
    而http的连接是等待timeout才会自动断开的,所以,当用完系统的句柄后,自然会报Too many open files。
    解决办法:
    设置post方法的header,增加

    post.addRequestHeader( "Connection", "close");
    client.getParams().setBooleanParameter( "http.protocol.expect-continue" , false );
    

    或者增加linux句柄数

    用ulimit -a (Linux服务器)查看open files项为多少,若为默认的1024, 则编辑/etc/security/limits.conf,
    在limits.conf加上
    *            soft        nproc           10240
    *            hard        nproc           10240
    *            soft        nofile          10240
    *            hard        nofile          10240
    保存退出;
    
    用ulimit -n 10240修改root的open files为10240  
    

      

     

  • 相关阅读:
    Redis宣言
    软件工程
    分布式编程
    编程泛型
    tcp/ip高效编程总结
    IP协议详解
    gevent程序员指南
    网站架构
    这些话,是乔布斯给世间留下的真正伟大礼物
    Flink/Spark 如何实现动态更新作业配置
  • 原文地址:https://www.cnblogs.com/JAYIT/p/7562169.html
Copyright © 2011-2022 走看看