gpt4 book ai didi

oracle - Docker 托管 TCP 连接在 5 分钟后断开

转载 作者:行者123 更新时间:2023-12-05 06:19:00 30 4
gpt4 key购买 nike

我有一个在 Windows 10 上的 docker 桌面中运行的 CentOS 7。我正在从 docker 中连接到在 Windows 10 上运行的 Oracle 12c。如果空闲,连接会在大约 5 分钟后断开。我该如何解决这个问题?

最佳答案

我在通过 TCP 连接到第三方应用程序的 Docker 中运行 python 应用程序时遇到了同样的问题。该应用程序在 Linux 上的 Python 中运行时保持无限期的空闲 TCP 连接,但是在 Docker 容器中运行的同一应用程序恰好在 5 分钟时断开了空闲连接。

我读过关于空闲 TCP 连接如何/为什么会在 Docker 中丢失的相互矛盾的信息(也许有人可以评论一个明确的答案),但我找到了一个对我有用的修复。

解决方案分为两部分:第一部分更改 Docker Compose YML 配置,第二部分更改应用代码本身。

首先,我在应用程序的 Docker Compose yml 文件中添加了 sysctls 选项:

app:
image: myImage:latest
sysctls:
- net.ipv4.tcp_keepalive_time=200

这会更改图像的默认 Linux 设置(我相信默认值为 600)。

其次,我将应用的 TCP 套接字代码配置为引用该 TCP Keepalive 值。在我的例子中,使用 Python,它看起来像这样:

socket_obj.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)

此套接字选项与 C++ 中的类似。

希望这对您和/或遇到此问题的其他人有所帮助。

关于oracle - Docker 托管 TCP 连接在 5 分钟后断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61031978/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com