簡體   English   中英

如何防止從 close_wait 連接打開太多文件

[英]How prevent too many file open from close_wait connections

我的程序通過他們的Java SDK在 min.io 服務器上獲取一些圖像。

問題是即使在inputStream.close()之后,java 代碼中的連接仍然保持打開狀態。 我可以用lsof -p <PID>看到它。

過了一會兒,它消失了,但有時它不會消失,我猜速度夠快,而且 java 服務器會拋出一些too many open files的錯誤。

有沒有像垃圾收集器一樣從操作系統中刪除連接? 如何防止這些too many open files錯誤?

以防萬一,這里是代碼:

public static byte[] getImageByImageBinaryId(String imagId) throws IOException {
    InputStream object = null;

    try {
        object = getMinioClientClient().getObject(ServerProperties.MINIO_BUCKET_NAME, imagId);
        return IOUtils.toByteArray(object);
    } catch (Exception e) {
        log.error(e);
    } finally {
        IOUtils.closeQuietly(object);
    }

    return null;
}

minio-java 內部使用 OkHttp 進行 HTTP 調用。 OkHttp 與許多 Http 客戶端一樣,在內部使用連接池來加速對同一位置的重復調用。 如果您需要不保持連接,您可以將您自己的 OkHttp 客戶端傳遞給具有您自己的池配置的可用構造函數之一,但我不建議這樣做。

Minio 可能應該公開一種關閉方法來清理這些資源,但它們的預期用例可能涉及客戶在應用程序的整個生命周期中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM