`
lizhe_0428
  • 浏览: 9556 次
  • 来自: ...
社区版块
存档分类
最新评论

HttpClient(too many open files) 解决办法

 
阅读更多
转自 http://hi.baidu.com/xulin_1027/item/ef760d368f9470f72784f4f2

HttpClient(too many open files)

错误信息:

java.net.SocketException: Too many open files
at java.net.Socket.createImpl(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:123)

严重: Endpoint ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=80] ignored exception: java.net.SocketException: Too many open files
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)

网络中查询有说是linux的文件打开数超过了默认的1024个文件,具体查看linux下面的文件打开最大值的命令ulimit -a,出现信息如下:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 69631
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 69631
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

其中open files                      (-n) 1024 默认为1024,网络中有说解决方法是加大文件打开的最大值,ulimit -n 8192,此命令未测试;

但是由于Httpclient引起的。当并发访问量过大的时候,这个方法只是治标不治本的。所有还是解决Httpclient远程请求所造成Socket没有释放,HttpClient本身存在这个问题。

网络中解决方案如下(加上红色的两行代码):

    client = new HttpClient();  
    client.getParams().setBooleanParameter("http.protocol.expect-continue", false);  
    HttpMethod httpMethod = ...;  
    httpMethod.addRequestHeader("Connection", "close");  
    client.executeMethod(httpMethod); 

用unlimit放大操作系统最大打开文件数的确可以短时间解决 Too many open files的现象,但这不是本质原因。
本质原因肯定能够是你的程序中没有及时close掉文件(在linux/unix中Socket也是文件)。否则只有在上千的绝对同时并发时,才可能出现Too many open files错误。
分享到:
评论

相关推荐

    详解.NET Core 使用HttpClient SSL请求出错的解决办法

    在.NET Core中使用HttpClient进行SSL请求时,开发者可能会遇到一个常见的问题:SSL证书验证失败。这通常发生在尝试连接到使用自签名证书或未被信任证书颁发机构(CA)签名的HTTPS服务时。当.NET Core的HttpClient...

    http连接关闭

    too many open files问题分析和解决

    彻底解决httpClient乱码问题

    本文将深入探讨如何使用HttpClient来彻底解决乱码问题。 HttpClient是一个功能强大的HTTP客户端,支持多种HTTP协议版本,包括GET、POST等请求方法,以及重试、连接管理等功能。在处理中文字符时,由于编码不一致...

    HttpClient、乱码解决:实例

    本篇将详细介绍如何使用HttpClient解决乱码问题。 一、HttpClient基本使用 HttpClient主要由以下几个核心组件构成: 1. HttpClient:客户端实例,负责管理连接、配置请求等。 2. HttpRequestBase:表示HTTP请求,如...

    使用httpclient解决跨域问题

    我使用的是httpClient 进行内部转发 我们在A的服务器上,将前台的文件流,通过httpClient传输到B的服务器上(B的服务器通过控制层接受A传输的文件流,让后保存在B的服务器上。返回一个json结果)

    httpclient4上传文件中文乱码问题解决办法代码示例

    服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。

    使用httpClient组件解析html并解决字符编码

    使用HttpClient组件解析HTML并解决字符编码问题 在网络信息采集中,经常需要解析HTML页面以获取有用的信息。使用HttpClient组件可以轻松地实现这一任务。但是,在实际使用中,经常会遇到字符集编码乱码问题。本文将...

    java.HttpClient与网络请求(解决方案).md

    java.HttpClient与网络请求(解决方案).md

    httpclient.jar包下载

    《深入解析httpclient.jar及其与code.jar的关联》 在Java开发中,HTTP通信是不可或缺的一部分,而Apache HttpClient库正是Java实现HTTP客户端操作的重要工具。本文将深入探讨httpclient.jar包,以及它与code.jar包...

    httpclient httpclient.jar

    在本文中,我们将深入探讨HttpClient的核心概念、使用方法以及如何通过`httpclient.jar`进行实战应用。 首先,HttpClient的主要组件包括: 1. **HttpClient实例**:这是整个HTTP通信的核心,负责管理连接、请求和...

    HttpClientHelper 工具类

    综上所述,HttpClientHelper 是一个实用的HTTP客户端工具类,结合了HttpClient的强大功能和单例模式的高效管理,为C#开发者提供了便捷的网络请求解决方案,特别适合于爬虫开发和需要频繁进行HTTP通信的项目。

    httpclient官网教程中文版

    Apache HttpClient 是一个强大的客户端HTTP传输类库,旨在为Java开发者提供一个高效、灵活且易于使用的HTTP客户端解决方案。它不仅支持基本的HTTP协议,还能满足更复杂的HTTP场景需求,例如重定向管理、身份验证、...

    httpclient

    创建HttpClient实例是使用HttpClient的第一步。通常,我们会创建一个`CloseableHttpClient`对象,这可以通过`HttpClientBuilder`或者`HttpAsyncClientBuilder`来实现。例如: ```java CloseableHttpClient ...

    httpClient

    HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); /* 2 生成 GetMethod 对象并设置参数 */ GetMethod ...

    HttpClient 3.x to HttpComponents HttpClient 4.x

    在IT行业中,从一个技术版本迁移到另一个更新的版本往往是一个重要的步骤,尤其是在...通过本文提供的快速迁移指南,程序员可以减少升级过程中的障碍,并利用社区中的资源来加速学习和解决迁移过程中可能遇到的问题。

    httpclient4.2.1.zip

    本文将深入探讨HttpClient 4.2.1的核心特性和使用方法,帮助开发者更好地理解和应用这个强大的工具。 一、HttpClient简介 HttpClient是一个开放源码的Java库,由Apache软件基金会维护。它为Java程序员提供了一个...

Global site tag (gtag.js) - Google Analytics