dianping / cat

CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

X86架构一次部署成功2280端口出现,ARM架构部署2280没有映射出来,换了几个环境发现x86部署没问题,ARM部署2280端口没出现

tangfan123 opened this issue · comments

X86架构一次部署成功2280端口出现,ARM架构部署2280没有映射出来,换了几个环境发现x86部署没问题,ARM部署2280端口就是没有被监听,netstat 看也没有,关键是tomcat启动一个报错没有!!
java8、tomcat8、tdsql,cat-home.war包直接github下载的已经打包好了的war包,3.1版本

---------------- arm服务器启动:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=1024m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=2048m; support was removed in 8.0
Please use CMSClassUnloadingEnabled in place of CMSPermGenSweepingEnabled in the future
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option CMSInitiatingPermOccupancyFraction=70; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: CMSFullGCsBeforeCompaction is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (2097152k) is equal to or greater than the entire heap (2097152k). A new max generation size of 2097088k will be used.
17-Jul-2023 10:46:33.334 INFO [main] org.apache.catalina.core.AprLifecycleListener.init The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/aarch64:/lib:/usr/lib
17-Jul-2023 10:46:33.521 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-9000"]
17-Jul-2023 10:46:33.532 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
17-Jul-2023 10:46:33.534 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
17-Jul-2023 10:46:33.535 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
17-Jul-2023 10:46:33.535 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 475 ms
17-Jul-2023 10:46:33.557 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
17-Jul-2023 10:46:33.557 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.5
Logger file /data/appdatas/cat/cat_20230717.log
log4j:WARN No appenders could be found for logger (io.netty.util.internal.logging.InternalLoggerFactory).
log4j:WARN Please initialize the log4j system properly.
[07-17 10:46:41.041] [INFO] [cat] Cat is lazy initialized!
17-Jul-2023 10:46:42.430 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /tomcat8/webapps/ROOT
17-Jul-2023 10:46:42.453 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /tomcat8/webapps/docs
17-Jul-2023 10:46:42.474 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /tomcat8/webapps/examples
17-Jul-2023 10:46:42.694 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /tomcat8/webapps/host-manager
17-Jul-2023 10:46:42.721 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /tomcat8/webapps/manager
17-Jul-2023 10:46:42.755 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-9000"]
17-Jul-2023 10:46:42.758 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
17-Jul-2023 10:46:42.759 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 9223 ms
[INFO] Working directory is /tomcat8/logs
[INFO] War root is /tomcat8/webapps/cat

commented

netty 支持arm架构的原生epoll可以看下这个commit

4684ba7

可以尝试master分支编译最新版本的包,看下是否可以在arm架构下部署

netty 支持arm架构的原生epoll可以看下这个commit

4684ba7

可以尝试master分支编译最新版本的包,看下是否可以在arm架构下部署


大佬,新master分支,在arm服务器上跑起来了,2280端口映射了,服务器运行正常,cat WEB端功能使用正常,但是观察运行一会以后报了如下错误,还望解答....

[ERROR] [AlertManager] test
java.net.UnknownHostException: test
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:196)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
at java.net.Socket.connect(Socket.java:606)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:499)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:594)
at sun.net.www.http.HttpClient.(HttpClient.java:278)
at sun.net.www.http.HttpClient.New(HttpClient.java:375)
at sun.net.www.http.HttpClient.New(HttpClient.java:393)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1240)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1167)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1061)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:995)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1354)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1329)
at com.dianping.cat.alarm.spi.sender.AbstractSender.httpPostSend(AbstractSender.java:102)
at com.dianping.cat.alarm.spi.sender.AbstractSender.httpSend(AbstractSender.java:140)
at com.dianping.cat.alarm.spi.sender.MailSender.sendEmail(MailSender.java:76)
at com.dianping.cat.alarm.spi.sender.MailSender.send(MailSender.java:48)
at com.dianping.cat.alarm.spi.sender.SenderManager.sendAlert(SenderManager.java:58)
at com.dianping.cat.alarm.spi.AlertManager.sendRecoveryMessage(AlertManager.java:214)
at com.dianping.cat.alarm.spi.AlertManager.access$400(AlertManager.java:51)
at com.dianping.cat.alarm.spi.AlertManager$RecoveryAnnouncer.run(AlertManager.java:257)
at java.lang.Thread.run(Thread.java:750)
at org.unidal.helper.Threads$RunnableThread.run(Threads.java:344)
[07-19 17:21:06.137] [ERROR] [ByteToMessageDecoder] readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68)
java.lang.IndexOutOfBoundsException: readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68)
at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477)
at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1463)
at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:896)
at com.dianping.cat.message.codec.NativeMetricBagDecoder$Context.readString(NativeMetricBagDecoder.java:92)
at com.dianping.cat.message.codec.NativeMetricBagDecoder.decodeMetric(NativeMetricBagDecoder.java:48)
at com.dianping.cat.message.codec.NativeMetricBagDecoder.decode(NativeMetricBagDecoder.java:22)
at com.dianping.cat.message.CodecHandler.decode(CodecHandler.java:51)
at com.dianping.cat.analysis.TcpSocketReceiver$MessageDecoder.decode(TcpSocketReceiver.java:163)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:750)
[07-19 17:21:10.137] [ERROR] [ByteToMessageDecoder] readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68)
java.lang.IndexOutOfBoundsException: readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68)
at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477)
at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1463)
at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:896)
at com.dianping.cat.message.codec.NativeMetricBagDecoder$Context.readString(NativeMetricBagDecoder.java:92)
at com.dianping.cat.message.codec.NativeMetricBagDecoder.decodeMetric(NativeMetricBagDecoder.java:48)
at com.dianping.cat.message.codec.NativeMetricBagDecoder.decode(NativeMetricBagDecoder.java:22)
at com.dianping.cat.message.CodecHandler.decode(CodecHandler.java:51)
at com.dianping.cat.analysis.TcpSocketReceiver$MessageDecoder.decode(TcpSocketReceiver.java:163)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:750)

commented

第一个报错信息
[ERROR] [AlertManager] test
java.net.UnknownHostException: test
显示的是告警发送有问题,unknownhost,配置的告警发送链接是 test, 无法解析这个域名,因此报错,可以看下数据库中 config这张表的name=senderConfig这个配置,里面配置了告警应该发送的地址,Cat自身没有实现告警发送的功能,他目前是将告警的内容发送到类似独立的告警中心(实现了具体发送逻辑,认证等信息),由独立的告警中心来完成真正的告警发送功能

commented

第二个报错信息看起来像是解码出了问题,好像是预期读取的字节数跟目前实际读取的字节数匹配不上,感觉是不是客户端上报数据有点问题

第二个报错信息看起来像是解码出了问题,好像是预期读取的字节数跟目前实际读取的字节数匹配不上,感觉是不是客户端上报数据有点问题

客户端的 pom依赖必须跟服务端一致吗,这里服务端用的是最新master编译的cat.war,springboot里面依赖还是以前3.0 3.1的client,有关系吗

commented

第二个报错信息看起来像是解码出了问题,好像是预期读取的字节数跟目前实际读取的字节数匹配不上,感觉是不是客户端上报数据有点问题

客户端的 pom依赖必须跟服务端一致吗,这里服务端用的是最新master编译的cat.war,springboot里面依赖还是以前3.0 3.1的client,有关系吗

应该是不需要的,都是3.x的版本,协议解析应该不影响,目前cat server自身上报的指标可以正常查看吗

第二个报错信息看起来像是解码出了问题,好像是预期读取的字节数跟目前实际读取的字节数匹配不上,感觉是不是客户端上报数据有点问题

客户端的 pom依赖必须跟服务端一致吗,这里服务端用的是最新master编译的cat.war,springboot里面依赖还是以前3.0 3.1的client,有关系吗

应该是不需要的,都是3.x的版本,协议解析应该不影响,目前cat server自身上报的指标可以正常查看吗


会是因为 master分支里面 netty是4.0,cat-home里面的Pom文件里面是4.0的,springboot打的包里面用的是3.x的 会影响吗,server运行一会正常就报那个 溢出的错误了

commented

第二个报错信息看起来像是解码出了问题,好像是预期读取的字节数跟目前实际读取的字节数匹配不上,感觉是不是客户端上报数据有点问题

客户端的 pom依赖必须跟服务端一致吗,这里服务端用的是最新master编译的cat.war,springboot里面依赖还是以前3.0 3.1的client,有关系吗

应该是不需要的,都是3.x的版本,协议解析应该不影响,目前cat server自身上报的指标可以正常查看吗

会是因为 master分支里面 netty是4.0,cat-home里面的Pom文件里面是4.0的,springboot打的包里面用的是3.x的 会影响吗,server运行一会正常就报那个 溢出的错误了

那有可能,我看了下,报错来源于下面这个 NM1 协议解析,这个协议我这边还没有了解过,感觉可以尝试用本地编译的4.0的client包,替换掉springboot中的3.x的client依赖;
另外服务端报错会崩溃吗,还是可以正常运行,只是会一直有报错日志

            if ("PT1".equals(hint)) {
		tree = m_plainTextCodec.decode(buf);
	} else if ("NT1".equals(hint)) {
		tree = m_nativeCodec.decode(buf);
	} else if ("NM1".equals(hint)) {
		MetricBag bag = m_metricBagDecoder.decode(buf);
		tree = new DefaultMessageTree();
		tree.setDomain(bag.getDomain());
		tree.setIpAddress(bag.getIpAddress());
		tree.setHostName(bag.getHostName());
		tree.getMetrics().addAll(bag.getMetrics());
	} else {
		throw new RuntimeException("Error message type : " + hint);
	}

第二个报错信息看起来像是解码出了问题,好像是预期读取的字节数跟目前实际读取的字节数匹配不上,感觉是不是客户端上报数据有点问题

客户端的 pom依赖必须跟服务端一致吗,这里服务端用的是最新master编译的cat.war,springboot里面依赖还是以前3.0 3.1的client,有关系吗

应该是不需要的,都是3.x的版本,协议解析应该不影响,目前cat server自身上报的指标可以正常查看吗

会是因为 master分支里面 netty是4.0,cat-home里面的Pom文件里面是4.0的,springboot打的包里面用的是3.x的 会影响吗,server运行一会正常就报那个 溢出的错误了

那有可能,我看了下,报错来源于下面这个 NM1 协议解析,这个协议我这边还没有了解过,感觉可以尝试用本地编译的4.0的client包,替换掉springboot中的3.x的client依赖; 另外服务端报错会崩溃吗,还是可以正常运行,只是会一直有报错日志

            if ("PT1".equals(hint)) {
		tree = m_plainTextCodec.decode(buf);
	} else if ("NT1".equals(hint)) {
		tree = m_nativeCodec.decode(buf);
	} else if ("NM1".equals(hint)) {
		MetricBag bag = m_metricBagDecoder.decode(buf);
		tree = new DefaultMessageTree();
		tree.setDomain(bag.getDomain());
		tree.setIpAddress(bag.getIpAddress());
		tree.setHostName(bag.getHostName());
		tree.getMetrics().addAll(bag.getMetrics());
	} else {
		throw new RuntimeException("Error message type : " + hint);
	}

我们已经尝试过把spring里面的依赖改为本地编译的4.0的client包,正常启动,但不会上报数据,4.0的client和3.0的client里面的逻辑是有改动对了一下源码,不知道是否是我们改造后没用对,还在排查,服务端启动正常,但是运行一段时间,点几个功能日志里面报:java.lang.IndexOutOfBoundsException: readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68)
后,服务端仪表盘显示 "cat服务端正常",但是其他功能如:state、business、cross报500,客服端停止报送数据或者是服务端接收不到了。

netty 支持arm架构的原生epoll可以看下这个commit
4684ba7
可以尝试master分支编译最新版本的包,看下是否可以在arm架构下部署

大佬,新master分支,在arm服务器上跑起来了,2280端口映射了,服务器运行正常,cat WEB端功能使用正常,但是观察运行一会以后报了如下错误,还望解答....

[ERROR] [AlertManager] test java.net.UnknownHostException: test at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:196) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) at java.net.Socket.connect(Socket.java:606) at sun.net.NetworkClient.doConnect(NetworkClient.java:175) at sun.net.www.http.HttpClient.openServer(HttpClient.java:499) at sun.net.www.http.HttpClient.openServer(HttpClient.java:594) at sun.net.www.http.HttpClient.(HttpClient.java:278) at sun.net.www.http.HttpClient.New(HttpClient.java:375) at sun.net.www.http.HttpClient.New(HttpClient.java:393) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1240) at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1167) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1061) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:995) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1354) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1329) at com.dianping.cat.alarm.spi.sender.AbstractSender.httpPostSend(AbstractSender.java:102) at com.dianping.cat.alarm.spi.sender.AbstractSender.httpSend(AbstractSender.java:140) at com.dianping.cat.alarm.spi.sender.MailSender.sendEmail(MailSender.java:76) at com.dianping.cat.alarm.spi.sender.MailSender.send(MailSender.java:48) at com.dianping.cat.alarm.spi.sender.SenderManager.sendAlert(SenderManager.java:58) at com.dianping.cat.alarm.spi.AlertManager.sendRecoveryMessage(AlertManager.java:214) at com.dianping.cat.alarm.spi.AlertManager.access$400(AlertManager.java:51) at com.dianping.cat.alarm.spi.AlertManager$RecoveryAnnouncer.run(AlertManager.java:257) at java.lang.Thread.run(Thread.java:750) at org.unidal.helper.Threads$RunnableThread.run(Threads.java:344) [07-19 17:21:06.137] [ERROR] [ByteToMessageDecoder] readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) java.lang.IndexOutOfBoundsException: readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477) at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1463) at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:896) at com.dianping.cat.message.codec.NativeMetricBagDecoder$Context.readString(NativeMetricBagDecoder.java:92) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decodeMetric(NativeMetricBagDecoder.java:48) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decode(NativeMetricBagDecoder.java:22) at com.dianping.cat.message.CodecHandler.decode(CodecHandler.java:51) at com.dianping.cat.analysis.TcpSocketReceiver$MessageDecoder.decode(TcpSocketReceiver.java:163) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) [07-19 17:21:10.137] [ERROR] [ByteToMessageDecoder] readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) java.lang.IndexOutOfBoundsException: readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477) at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1463) at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:896) at com.dianping.cat.message.codec.NativeMetricBagDecoder$Context.readString(NativeMetricBagDecoder.java:92) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decodeMetric(NativeMetricBagDecoder.java:48) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decode(NativeMetricBagDecoder.java:22) at com.dianping.cat.message.CodecHandler.decode(CodecHandler.java:51) at com.dianping.cat.analysis.TcpSocketReceiver$MessageDecoder.decode(TcpSocketReceiver.java:163) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750)


尝试使用
releases V3.1.0
服务端源码,把里面的client 依赖的netty更改为最新master分支里面的版本,发现catalina.out 没有报错了,但使用一会以后发现服务端又出毛病了,application 点击直接报错500,发现cat服务端日志启动时候报错:
[07-25 14:20:13.132] [INFO] [MVC] MVC started at /cat
[07-25 14:20:13.372] [ERROR] [CatClientModule$CatThreadListener] Uncaught exception thrown out of thread(Cat-DefaultMessageProcessor 2023-07-25 14:00:00-19)
org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Linux and os.arch=aarch64
at org.xerial.snappy.SnappyLoader.findNativeLibrary(SnappyLoader.java:331)
at org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:171)
at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:152)
at org.xerial.snappy.Snappy.(Snappy.java:46)
at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:97)
at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:89)
at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:79)
at org.unidal.cat.message.storage.internals.DefaultBlock.createOutputSteam(DefaultBlock.java:92)
at org.unidal.cat.message.storage.internals.DefaultBlock.(DefaultBlock.java:68)
at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.processMessage(DefaultMessageProcessor.java:119)
at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.run(DefaultMessageProcessor.java:159)
at java.lang.Thread.run(Thread.java:750)
at org.unidal.helper.Threads$RunnableThread.run(Threads.java:294)
[07-25 14:20:13.424] [WARN] [DefaultClientConfigManager] error when connect cat server config url http://172.15.244.240:9000/cat/s/router?domain=cat&ip=172.15.244.240&op=json
[07-25 14:20:13.425] [INFO] [ChannelManager] start connect server/172.15.244.240:2280
[07-25 14:20:13.427] [INFO] [ChannelManager] Connected to CAT server at /172.15.244.240:2280
[07-25 14:20:13.435] [ERROR] [CatClientModule$CatThreadListener] Uncaught exception thrown out of thread(Cat-DefaultMessageProcessor 2023-07-25 14:00:00-8)
java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy
at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:97)
at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:89)
at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:79)
at org.unidal.cat.message.storage.internals.DefaultBlock.createOutputSteam(DefaultBlock.java:92)
at org.unidal.cat.message.storage.internals.DefaultBlock.(DefaultBlock.java:68)
at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.processMessage(DefaultMessageProcessor.java:119)
at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.run(DefaultMessageProcessor.java:159)
at java.lang.Thread.run(Thread.java:750)
at org.unidal.helper.Threads$RunnableThread.run(Threads.java:294)
[07-25 14:20:23.444] [INFO] [ChannelManager] router config changed :172.15.244.240:2280;

commented

netty 支持arm架构的原生epoll可以看下这个commit
4684ba7
可以尝试master分支编译最新版本的包,看下是否可以在arm架构下部署

大佬,新master分支,在arm服务器上跑起来了,2280端口映射了,服务器运行正常,cat WEB端功能使用正常,但是观察运行一会以后报了如下错误,还望解答....
[ERROR] [AlertManager] test java.net.UnknownHostException: test at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:196) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) at java.net.Socket.connect(Socket.java:606) at sun.net.NetworkClient.doConnect(NetworkClient.java:175) at sun.net.www.http.HttpClient.openServer(HttpClient.java:499) at sun.net.www.http.HttpClient.openServer(HttpClient.java:594) at sun.net.www.http.HttpClient.(HttpClient.java:278) at sun.net.www.http.HttpClient.New(HttpClient.java:375) at sun.net.www.http.HttpClient.New(HttpClient.java:393) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1240) at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1167) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1061) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:995) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1354) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1329) at com.dianping.cat.alarm.spi.sender.AbstractSender.httpPostSend(AbstractSender.java:102) at com.dianping.cat.alarm.spi.sender.AbstractSender.httpSend(AbstractSender.java:140) at com.dianping.cat.alarm.spi.sender.MailSender.sendEmail(MailSender.java:76) at com.dianping.cat.alarm.spi.sender.MailSender.send(MailSender.java:48) at com.dianping.cat.alarm.spi.sender.SenderManager.sendAlert(SenderManager.java:58) at com.dianping.cat.alarm.spi.AlertManager.sendRecoveryMessage(AlertManager.java:214) at com.dianping.cat.alarm.spi.AlertManager.access$400(AlertManager.java:51) at com.dianping.cat.alarm.spi.AlertManager$RecoveryAnnouncer.run(AlertManager.java:257) at java.lang.Thread.run(Thread.java:750) at org.unidal.helper.Threads$RunnableThread.run(Threads.java:344) [07-19 17:21:06.137] [ERROR] [ByteToMessageDecoder] readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) java.lang.IndexOutOfBoundsException: readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477) at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1463) at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:896) at com.dianping.cat.message.codec.NativeMetricBagDecoder$Context.readString(NativeMetricBagDecoder.java:92) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decodeMetric(NativeMetricBagDecoder.java:48) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decode(NativeMetricBagDecoder.java:22) at com.dianping.cat.message.CodecHandler.decode(CodecHandler.java:51) at com.dianping.cat.analysis.TcpSocketReceiver$MessageDecoder.decode(TcpSocketReceiver.java:163) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) [07-19 17:21:10.137] [ERROR] [ByteToMessageDecoder] readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) java.lang.IndexOutOfBoundsException: readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477) at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1463) at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:896) at com.dianping.cat.message.codec.NativeMetricBagDecoder$Context.readString(NativeMetricBagDecoder.java:92) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decodeMetric(NativeMetricBagDecoder.java:48) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decode(NativeMetricBagDecoder.java:22) at com.dianping.cat.message.CodecHandler.decode(CodecHandler.java:51) at com.dianping.cat.analysis.TcpSocketReceiver$MessageDecoder.decode(TcpSocketReceiver.java:163) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750)

尝试使用 releases V3.1.0 服务端源码,把里面的client 依赖的netty更改为最新master分支里面的版本,发现catalina.out 没有报错了,但使用一会以后发现服务端又出毛病了,application 点击直接报错500,发现cat服务端日志启动时候报错: [07-25 14:20:13.132] [INFO] [MVC] MVC started at /cat [07-25 14:20:13.372] [ERROR] [CatClientModule$CatThreadListener] Uncaught exception thrown out of thread(Cat-DefaultMessageProcessor 2023-07-25 14:00:00-19) org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Linux and os.arch=aarch64 at org.xerial.snappy.SnappyLoader.findNativeLibrary(SnappyLoader.java:331) at org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:171) at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:152) at org.xerial.snappy.Snappy.(Snappy.java:46) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:97) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:89) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:79) at org.unidal.cat.message.storage.internals.DefaultBlock.createOutputSteam(DefaultBlock.java:92) at org.unidal.cat.message.storage.internals.DefaultBlock.(DefaultBlock.java:68) at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.processMessage(DefaultMessageProcessor.java:119) at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.run(DefaultMessageProcessor.java:159) at java.lang.Thread.run(Thread.java:750) at org.unidal.helper.Threads$RunnableThread.run(Threads.java:294) [07-25 14:20:13.424] [WARN] [DefaultClientConfigManager] error when connect cat server config url http://172.15.244.240:9000/cat/s/router?domain=cat&ip=172.15.244.240&op=json [07-25 14:20:13.425] [INFO] [ChannelManager] start connect server/172.15.244.240:2280 [07-25 14:20:13.427] [INFO] [ChannelManager] Connected to CAT server at /172.15.244.240:2280 [07-25 14:20:13.435] [ERROR] [CatClientModule$CatThreadListener] Uncaught exception thrown out of thread(Cat-DefaultMessageProcessor 2023-07-25 14:00:00-8) java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:97) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:89) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:79) at org.unidal.cat.message.storage.internals.DefaultBlock.createOutputSteam(DefaultBlock.java:92) at org.unidal.cat.message.storage.internals.DefaultBlock.(DefaultBlock.java:68) at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.processMessage(DefaultMessageProcessor.java:119) at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.run(DefaultMessageProcessor.java:159) at java.lang.Thread.run(Thread.java:750) at org.unidal.helper.Threads$RunnableThread.run(Threads.java:294) [07-25 14:20:23.444] [INFO] [ChannelManager] router config changed :172.15.244.240:2280;

org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Linux and os.arch=aarch64 这个报错是snappy这个压缩算法依赖找不到native library对应的系统架构的本地依赖实现

看起来比较奇怪,因为master分支和3.1.0分支,这个snappy依赖的版本都是一样的,都是1.1.2,从他的代码来看
https://github.com/xerial/snappy-java/blob/master/src/main/java/org/xerial/snappy/OSInfo.java

os.arch=aarch64 这个应该很早就添加了,或许可以升级下版本看下,但是不是太确定,相比于x86架构,arm架构可能会存在一些兼容性问题

https://mvnrepository.com/artifact/org.xerial.snappy/snappy-java

netty 支持arm架构的原生epoll可以看下这个commit
4684ba7
可以尝试master分支编译最新版本的包,看下是否可以在arm架构下部署

大佬,新master分支,在arm服务器上跑起来了,2280端口映射了,服务器运行正常,cat WEB端功能使用正常,但是观察运行一会以后报了如下错误,还望解答....
[ERROR] [AlertManager] test java.net.UnknownHostException: test at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:196) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) at java.net.Socket.connect(Socket.java:606) at sun.net.NetworkClient.doConnect(NetworkClient.java:175) at sun.net.www.http.HttpClient.openServer(HttpClient.java:499) at sun.net.www.http.HttpClient.openServer(HttpClient.java:594) at sun.net.www.http.HttpClient.(HttpClient.java:278) at sun.net.www.http.HttpClient.New(HttpClient.java:375) at sun.net.www.http.HttpClient.New(HttpClient.java:393) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1240) at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1167) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1061) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:995) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1354) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1329) at com.dianping.cat.alarm.spi.sender.AbstractSender.httpPostSend(AbstractSender.java:102) at com.dianping.cat.alarm.spi.sender.AbstractSender.httpSend(AbstractSender.java:140) at com.dianping.cat.alarm.spi.sender.MailSender.sendEmail(MailSender.java:76) at com.dianping.cat.alarm.spi.sender.MailSender.send(MailSender.java:48) at com.dianping.cat.alarm.spi.sender.SenderManager.sendAlert(SenderManager.java:58) at com.dianping.cat.alarm.spi.AlertManager.sendRecoveryMessage(AlertManager.java:214) at com.dianping.cat.alarm.spi.AlertManager.access$400(AlertManager.java:51) at com.dianping.cat.alarm.spi.AlertManager$RecoveryAnnouncer.run(AlertManager.java:257) at java.lang.Thread.run(Thread.java:750) at org.unidal.helper.Threads$RunnableThread.run(Threads.java:344) [07-19 17:21:06.137] [ERROR] [ByteToMessageDecoder] readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) java.lang.IndexOutOfBoundsException: readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477) at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1463) at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:896) at com.dianping.cat.message.codec.NativeMetricBagDecoder$Context.readString(NativeMetricBagDecoder.java:92) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decodeMetric(NativeMetricBagDecoder.java:48) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decode(NativeMetricBagDecoder.java:22) at com.dianping.cat.message.CodecHandler.decode(CodecHandler.java:51) at com.dianping.cat.analysis.TcpSocketReceiver$MessageDecoder.decode(TcpSocketReceiver.java:163) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) [07-19 17:21:10.137] [ERROR] [ByteToMessageDecoder] readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) java.lang.IndexOutOfBoundsException: readerIndex(15) + length(55) exceeds writerIndex(68): PooledUnsafeDirectByteBuf(ridx: 15, widx: 68, cap: 68) at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477) at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1463) at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:896) at com.dianping.cat.message.codec.NativeMetricBagDecoder$Context.readString(NativeMetricBagDecoder.java:92) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decodeMetric(NativeMetricBagDecoder.java:48) at com.dianping.cat.message.codec.NativeMetricBagDecoder.decode(NativeMetricBagDecoder.java:22) at com.dianping.cat.message.CodecHandler.decode(CodecHandler.java:51) at com.dianping.cat.analysis.TcpSocketReceiver$MessageDecoder.decode(TcpSocketReceiver.java:163) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750)

尝试使用 releases V3.1.0 服务端源码,把里面的client 依赖的netty更改为最新master分支里面的版本,发现catalina.out 没有报错了,但使用一会以后发现服务端又出毛病了,application 点击直接报错500,发现cat服务端日志启动时候报错: [07-25 14:20:13.132] [INFO] [MVC] MVC started at /cat [07-25 14:20:13.372] [ERROR] [CatClientModule$CatThreadListener] Uncaught exception thrown out of thread(Cat-DefaultMessageProcessor 2023-07-25 14:00:00-19) org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Linux and os.arch=aarch64 at org.xerial.snappy.SnappyLoader.findNativeLibrary(SnappyLoader.java:331) at org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:171) at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:152) at org.xerial.snappy.Snappy.(Snappy.java:46) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:97) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:89) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:79) at org.unidal.cat.message.storage.internals.DefaultBlock.createOutputSteam(DefaultBlock.java:92) at org.unidal.cat.message.storage.internals.DefaultBlock.(DefaultBlock.java:68) at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.processMessage(DefaultMessageProcessor.java:119) at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.run(DefaultMessageProcessor.java:159) at java.lang.Thread.run(Thread.java:750) at org.unidal.helper.Threads$RunnableThread.run(Threads.java:294) [07-25 14:20:13.424] [WARN] [DefaultClientConfigManager] error when connect cat server config url http://172.15.244.240:9000/cat/s/router?domain=cat&ip=172.15.244.240&op=json [07-25 14:20:13.425] [INFO] [ChannelManager] start connect server/172.15.244.240:2280 [07-25 14:20:13.427] [INFO] [ChannelManager] Connected to CAT server at /172.15.244.240:2280 [07-25 14:20:13.435] [ERROR] [CatClientModule$CatThreadListener] Uncaught exception thrown out of thread(Cat-DefaultMessageProcessor 2023-07-25 14:00:00-8) java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:97) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:89) at org.xerial.snappy.SnappyOutputStream.(SnappyOutputStream.java:79) at org.unidal.cat.message.storage.internals.DefaultBlock.createOutputSteam(DefaultBlock.java:92) at org.unidal.cat.message.storage.internals.DefaultBlock.(DefaultBlock.java:68) at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.processMessage(DefaultMessageProcessor.java:119) at org.unidal.cat.message.storage.internals.DefaultMessageProcessor.run(DefaultMessageProcessor.java:159) at java.lang.Thread.run(Thread.java:750) at org.unidal.helper.Threads$RunnableThread.run(Threads.java:294) [07-25 14:20:23.444] [INFO] [ChannelManager] router config changed :172.15.244.240:2280;

org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Linux and os.arch=aarch64 这个报错是snappy这个压缩算法依赖找不到native library对应的系统架构的本地依赖实现

看起来比较奇怪,因为master分支和3.1.0分支,这个snappy依赖的版本都是一样的,都是1.1.2,从他的代码来看 https://github.com/xerial/snappy-java/blob/master/src/main/java/org/xerial/snappy/OSInfo.java

os.arch=aarch64 这个应该很早就添加了,或许可以升级下版本看下,但是不是太确定,相比于x86架构,arm架构可能会存在一些兼容性问题

https://mvnrepository.com/artifact/org.xerial.snappy/snappy-java


问题已经解决 升级了 3.1源码包里面的netty依赖,和org.xerial.snappy.SnappyError 这个报错包的依赖,服务端问题跑了一晚上,数据报送也正常,感谢回复!!!!!!!!!1