运行一段时间的mycat出现无法访问的情况,控制台无法链接:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
查看日志发现:
2020-04-27 08:53:09.735 ERROR [$_NIOREACTOR-1-RW] (io.mycat.net.NIOReactor$RW.register(NIOReactor.java:163)) - register err
java.lang.NullPointerException
at io.mycat.backend.mysql.BufferUtil.writeUB3(BufferUtil.java:39) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.mysql.HandshakePacket.write(HandshakePacket.java:98) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.FrontendConnection.register(FrontendConnection.java:441) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOReactor$RW.register(NIOReactor.java:160) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOReactor$RW.run(NIOReactor.java:92) ~[Mycat-server-1.6-RELEASE.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
2020-04-27 08:53:11.774 ERROR [$_NIOREACTOR-2-RW] (io.mycat.net.NIOReactor$RW.register(NIOReactor.java:163)) - register err
java.lang.NullPointerException
at io.mycat.backend.mysql.BufferUtil.writeUB3(BufferUtil.java:39) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.mysql.HandshakePacket.write(HandshakePacket.java:98) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.FrontendConnection.register(FrontendConnection.java:441) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOReactor$RW.register(NIOReactor.java:160) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOReactor$RW.run(NIOReactor.java:92) ~[Mycat-server-1.6-RELEASE.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
2020-04-27 08:53:12.176 ERROR [$_NIOREACTOR-3-RW] (io.mycat.net.NIOReactor$RW.register(NIOReactor.java:163)) - register err
java.lang.NullPointerException
at io.mycat.backend.mysql.BufferUtil.writeUB3(BufferUtil.java:39) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.mysql.HandshakePacket.write(HandshakePacket.java:98) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.FrontendConnection.register(FrontendConnection.java:441) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOReactor$RW.register(NIOReactor.java:160) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOReactor$RW.run(NIOReactor.java:92) ~[Mycat-server-1.6-RELEASE.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
2020-04-27 08:53:12.178 ERROR [$_NIOREACTOR-0-RW] (io.mycat.net.NIOReactor$RW.register(NIOReactor.java:163)) - register err
java.lang.NullPointerException
at io.mycat.backend.mysql.BufferUtil.writeUB3(BufferUtil.java:39) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.mysql.HandshakePacket.write(HandshakePacket.java:98) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.FrontendConnection.register(FrontendConnection.java:441) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOReactor$RW.register(NIOReactor.java:160) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOReactor$RW.run(NIOReactor.java:92) ~[Mycat-server-1.6-RELEASE.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
2020-04-27 08:53:30.170 ERROR [$_NIOREACTOR-1-RW] (io.mycat.net.NIOReactor$RW.register(NIOReactor.java:163)) - register err
大量的注册失败错误,由于运行一段时间都无错误,且经过排查不是配置上的问题,推测是网络问题造成的注册失败,最后找到官网github上,发现是一个版本上的bug,会有概率的出现错误。
缓冲池泄露造成mycta假死,无法访问,haproxy检测到mycat还是正常运行。
本人使用的版本是1.6-RELEASE,更新到1.6.5即可解决此问题。