在一次帮同事排查问题的过程中,我发现当派发请求的线程因 OOM 终止后,netstat
命令显示的 Recv-Q
与设置的 backlog
并不完全相同,而是存在 Recv-Q = backlog + 1
的关系,比如执行 netstat -tulnp
命令输出如下:
1 | Active Internet connections (only servers) |
在一次帮同事排查问题的过程中,我发现当派发请求的线程因 OOM 终止后,netstat
命令显示的 Recv-Q
与设置的 backlog
并不完全相同,而是存在 Recv-Q = backlog + 1
的关系,比如执行 netstat -tulnp
命令输出如下:
1 | Active Internet connections (only servers) |
今天帮同事查了个关于 fastjson 反序列化的问题,现象是一处反序列化的代码在发布至测试环境一段时间后反序列化的结果不正确,且该问题在本地无法复现。经过排查,确认与泛型的反序列化有关,该组应用的 fastjson 版本为 1.2.29,简化相关代码后有如下类:
1 | package me.tianshuang; |
今天在调试时又遇到行号无法对齐的问题,因为之前开发 Java Agent 时遇到过,常见于源码 jar 与运行时 jar 不一致导致,本文简要记录。
今天有一台服务器频繁打印 java.lang.NullPointerException
,但是不包含栈帧信息,起初我以为是应用层代码使用 log4j2 打印时直接调用了 log.error(e)
进行打印,因为该方法最终会调用异常对象的 toString()
方法然后打印出异常信息,对于 java.lang.NullPointerException
实例,最终调用的 java.lang.Throwable#toString
获取到需要打印的字符串:
1 | /** |
如果看过 JDK 8 中 ArrayList
的源码,你会发现存在如下代码 ArrayList.java at jdk8-b120:
1 | /** |