项目中发现分页有时会发生变化,所以开始排查。
下载启动 java -jar 启动 Arthas
通过Arthas stack命令查看当前方法被调用的调用路径
通过Arthas trace命令查看方法内部调用路径
通过Arthas watch命令查看方法返回值
通过Arthas getstatic命令查看类的静态属性
或者使用java-debug-tool
发现每次重新上线 分页正常 按照静态属性25分页 过一段时间后 分页变为500
查看静态属性确实由25变成了500
查看静态属性赋值方法 有一个接口的会按照500分页
一旦调用该接口 JVM实例中分页默认值就变成500
之前分页项很少,所以没有发现
项目运行一段时间后 会发现分页异常 看不到下一页的数据
项目是分布式结构 直接发生异常分页500的接口处于 业务线上
实际对外的Web项目调用该业务线其他涉及到分页的接口后 会将数据反序列化成对象 并且通过代码更新PageSize 覆盖掉本地的默认分页 间接发生异常 最终导致分页发生错误