Mysql-proxy 会随机使系统过载,直到我将其关闭

Mysql-proxy 会随机使系统过载,直到我将其关闭

我在 Windows 7 系统上使用 mysql-proxy 0.8.3。

有时,我会在日志中收到以下调试消息:

(调试).\chassis-event-thread.c:254: 来自 event-notify-fd 的 recv() 失败:未知错误

mysql-proxy 进程开始占用 25% 的 CPU(四核),直到我将其终止。它继续正确处理查询,同时使系统过载。

相同的查询/脚本并不总是会触发问题。我不知道如何修复它。

答案1

我没有使用过 mysql 代理和 windows,但我做了一些调查。我找到了 mysql-proxy 源,您的错误从这里记录下来:http://bazaar.launchpad.net/~mysql-proxy-developers/mysql-proxy/0.8/view/head:/src/chassis-event-thread.c#L252(我猜想 2 行差异来自源代码格式)。看起来 238 行的 recv 返回了 E_NET_WOULDBLOCK 值。第 57 行有定义(您说您在 Windows 上)

#define E_NET_WOULDBLOCK WSAEWOULDBLOCK

因此真正的错误是 WSAEWOULDBLOCK。搜索后我发现:https://stackoverflow.com/a/14549541

WSAEWOULDBLOCK 并不是真正的错误,只是告诉您发送缓冲区已满。如果您的网络饱和或对方只是不确认收到的数据,则可能会发生这种情况。

我猜这是 mysql 代理中的一个错误。它可能陷入了无限循环,试图从繁忙/空/死机的套接字接收数据(这就是 CPU 使用率达到 100% 的原因)。也许您可以尝试使用 master 版本(我不知道是否有 Windows 版本)?

相关内容