【发布时间】:2021-07-18 23:19:53
【问题描述】:
我仍然不知道问题是与 docker 网络、节点还是从节点到 mysql 的连接有关。
但是我有一个包含用于 api 管理的快速网关的 docker。每隔一段时间它就会开始给Operation timed out
错误来自 nodejs,但是当它发生时:
-
我在容器的日志中看不到任何内容
-
从服务器运行 tcpdump 显示正在调用 docker api,但返回响应为 500(正确运行时,我可以看到调用端口 3306 以连接到数据库)
-
从 docker 容器内部运行 tcpdump 绝对不会返回任何内容(正常工作时我可以看到调用)
-
不需要数据库连接的调用可以正常工作!但我仍然看不到他们在容器中的日志,也看不到他们在 tcpdump 中的调用
就好像服务器正在调用另一个 docker,但我搜索了所有卷、图像,没有重复。
我尝试检查以下内容:
-
同一台机器上的资源
-
数据库机器上的资源
-
在服务器和 docker 上都使用wireshark tcpdump
-
添加连接池以进行续集(以防有时与数据库的连接导致阻塞)
-
检查所有 oauth2 路由,以防它重定向到本地主机服务器或其他任何东西
-
到处添加日志只是为了在发生这种情况时查看日志,但徒劳无功
-
使用外部端口从服务器远程登录到本地主机,使用内部端口远程登录到 172.17.0.2 -> 当我从本地主机执行此操作时略有不同,一段时间后我收到
Connection closed by foreign host
【问题讨论】:
-
可能是登录容器的问题。服务器在无法记录请求时停止响应。
-
谢谢,您的意思是从应用程序内部吗?因为我正在使用console.log 登录到标准输出。但是当这种情况发生时,我正在进入 docker 并执行 netstat 来检查监听端口并且它处于打开状态,节点的进程也在运行。 (我刚刚删除了 log_level DEBUG 并将检查它是否有所作为)
-
是的,当我说“服务器”时,我指的是在容器中运行的服务器。
-
我仍然有这个问题,删除了所有日志(实际上它只是一个测试服务器,我只访问它没有那么大的负载)我可以尝试其他任何事情吗?发生的另一件事即使重新启动容器也无法修复它
标签: mysql node.js docker networking