当前位置: 首页 > 知识库问答 >
问题:

连接池和文件句柄

连曜灿
2023-03-14

对于来自Android应用程序的所有网络流量,我们都使用retrofit/okhttp3。到目前为止,一切似乎都进行得相当顺利。

然而,我们现在偶尔会出现应用程序/进程用完文件句柄的情况。

    null
    null

如何防止OkHttp创建太多的文件句柄?

共有1个答案

祝宾白
2023-03-14

我在这里回答我自己的问题,以记录我们的这个问题。我们花了一段时间才弄明白这一点,我想其他人可能也会遇到这一点,可能会为这个答案感到高兴。

我们的问题是,我们为每个请求创建了一个OKHttpClient,因为我们使用它的builder/interceptor API来配置一些每个请求的参数,如HTTP头或超时。

默认情况下,每个OKHttpClient都有自己的连接池,这当然会增加连接/线程/文件句柄的数量,并阻止池中的适当重用。

    null

然后,我们能够适当地调整全局连接池的大小。

 类似资料:
  • 请原谅,这很可能是一个愚蠢的新手问题。 我们使用Hystrix作为两个服务之间的断路器。为了提高性能,我们使用了连接池。我们正在使用Apache HttpClient的PoolingHttpClientConnectionManager来处理连接池。 我们还使用Hystrix的“TimeoutInMissels”属性来捕获问题。 我们遇到的“问题”是,在正常操作中,创建一个新的HTTPS连接需要c

  • 我一直在到处寻找,收集零碎的东西,如果这已经在其他地方得到了回答,但我找不到,我很抱歉。 我正在用Java编写一个web应用程序,在后端使用Tomcat和SQLAzure。 有多个servlet访问SQLAzure DB。我想使用由Tomcat 8.5管理的连接池 我的应用程序上下文。META-INF中的xml如下所示: 在Java代码中,我以典型的方式访问: ds.get连接。 一切似乎都正常,

  • 可能重复: dbcp中的已准备语句池 我正在构建一个Web应用程序,它使用Tomcat的数据库连池机制进行内部使用。我试图汇集准备好的语句,以便应用程序在检索数据时更有效。 据我所知,当连接、结果集和语句关闭时,连接将返回到池。如果设置了适当的标志,放弃的连接也会关闭并返回到池中。关闭连接意味着释放所有数据库游标和缓存的语句,包括准备好的语句。那么准备好的语句池有什么意义呢?

  • 我在我的Spring开机应用程序中使用光Cp。 这是我的java配置文件:- 当我启动应用程序并发送第一个请求后,我得到了下面的日志。 几秒钟后,它立即将接下来的四个连接添加到空闲状态:- 我的问题是,我只发送了一个请求,为什么hikira增加了4个额外的连接,并且已经有一个空闲连接,为什么它不能重用同一个连接。 我已经为每个连接提供了最大提升时间条件,并且在通过后,连接仍处于空闲状态。 所以任何

  • 我对连接池有一些疑问。在SQL Server连接池文章中提到的内容类似于“打开新连接时,如果连接字符串与现有池不完全匹配,则会创建一个新池。每个进程、每个应用程序域、每个连接字符串以及使用集成安全性时、每个Windows标识将连接池化。” 现在我有了自己的windows窗体应用程序,它具有SQL连接。 > 所以当我打开应用程序时,SQL连接首次打开,并创建了一个池。所以,如果我关闭应用程序池会被自

  • 作为一个专业的服务端开发工程师,我们必须要对连接池、线程池、内存池等有较深理解,并且有自己熟悉的库函数可以让我们轻松驾驭这些不同的 池子。既然他们都叫某某池,那么他们从基础概念上讲,原理和目的几乎是一样的,那就是 复用。 以连接池做引子,我们说说服务端工程师基础必修课。 从我们应用最多的 HTTP 连接、数据库连接、消息推送、日志存储等,所有点到点之间,都需要花样繁多的各色连接。为了传输数据,我们