
想到对方服务端最近总是登录不上,会不会是断线重连的代码有问题。新手程序员第一次遇到这种问题,没有任何报错日志,请各位大佬赐教。
这里是 GC 情况、实例数和假死前最后的日志: https://imgur.com/a/9AKTlBz
1 ql562482472 2023 年 3 月 4 日 看看代码才知道 日志没看出来啥东西 |
2 voidmnwzp 2023 年 3 月 4 日 via iPhone 这个问题我之前遇到过 排查过是堆外内存溢出导致的 要设置下堆外内存的限制 -XX:MaxDirectMemorySize |
4 Deus404 OP @voidmnwzp 好的我去试一下这个参数。之前设置了-Xms1024m -Xmx2048m 反而假死的更快了,本来半个月才假死,设置完几个小时就假死了,后来就给去掉了=-= |
5 Reminders 2023 年 3 月 4 日 via iPhone 假死是什么意思? |
6 Deus404 OP @codingbody 进程还在但是程序不运行了 |
7 Deus404 OP |
8 mango88 2023 年 3 月 4 日 没看到关闭 EventLoopGroup 的代码 |
9 ql562482472 2023 年 3 月 4 日 你这些代码我也没看出来问题,不过我说一下我的思路啊: 1 )进程还在但程序不运行,我理解是无法接收到新的消息,那么这里是不是有可能是:Socket 这边接受数据的缓冲区满了之后,没有被读走?这里是接受器有异常,循环 block 了? 2 )内存满了,但没有 OOM ,堆内存没有被释放,但是并没有继续申请新内存,因为如果申请了就应该 OOM 才对? 3 )还有可能就是堆外内存不足,Netty 没有堆外内存,就不会继续读请求,是不是有一个特别大的请求,一直没有传完?而且之前在 pipeline 上处理的信息没结束,之前的堆外内存也没有释放,没结束可能是哪里执行特别耗时 /卡死什么的? 你这些请求有没有规律?会不会有一些特定的功能号的连续调用引起的? |
10 Ericcccccccc 2023 年 3 月 4 日 先把内存加大. |
11 Deus404 OP @mango88 刚才把 connect 方法发给 ChatGPT 看,它也说没有关闭 EventLoopGroup 会导致内存溢出,我去改下代码再部署试试 |
12 urnoob 2023 年 3 月 4 日 via Android 看代码片段,就是奇怪的逻辑。 channel inactive 为啥要 new client 去 connect 完全不需要这句代码。 connect 代码每次都要从头建一遍 bootstrap 那些,拿现在的重新 connect 一下不就好了么,连 listener 都不用 new 另外常量赋值有线程安全问题。为啥要 sleep thread 毫无理由的写法 写的人没理解 netty |
13 ezksdo 2023 年 3 月 4 日 @panjiaming 你应该复用 EventLoop ,而不是一直重新创建 eventloop |
14 1461665214 2023 年 3 月 5 日 看了下代码 感觉是你写的有问题 new Client 每次都创建新的线程组 每个线程组默认 CPU 核心数*2 你在应该是线程过多把 CPU 和内存资源都占了导致的 |