使用报错
# WebSocket (web socket 错误,请检查是否开启 ws 代理)
Jpom 中服务端和插件端通信方式有 http、WebSocket,http 主要传输一下基础操作、上传文件相关,WebSocket 主要用于一些需要实时传输的信息如:控制台日志、脚本执行日志等。
服务端中对接口也是采用 http+WebSocket 来实现,如果用户在使用中出现 WebSocket 连接错误或者控制台看不到任何信息时候:需要检查一下是否使用代理软件代理 Jpom 服务端或者插件端(如:nginx 代理)
如果使用了代理需要确认是否配置 WebSocket 相关配置
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
1
2
2
# Jps 命令异常
Jpom 针对 Java 程序状态监控采用 jps 命令,jps 在 jdk 中都默认包含一般不需要额外配置,如果出现插件端中提示 jps 命令异常等相关错误提示。
- 需要检查一下在服务器中能正常执行 jps 命令,不能正常执行需要检查 jdk 是否完整
- 需要检查插件端是否能正常加载环境变量
- 需要检查服务器中是否存在多个 jdk 环境,如果存在多个需要确认使用的 jdk 是否正确(特殊情况下可以在 agent.sh、agent.bat 中指定使用的 jdk)
- linux 服务器建议使用绝对路径启动插件端 如:sh /xxxx/xxxx/Agent.sh
- windows 服务器需要检查 Agent.bat 编码格式是否匹配,windows 环境中建议使用 GB2312 编码格式
# Jps 执行响应很慢
Jpom 中在获取节点状态、进程列表都会使用到部分 jps 命令,如果您发现节点基本功能都正常,但节点监控异常或者无法查看进程列表。
插件端日志有大量 /status
超时信息
此时您可以在服务器中执行一下:jps -l
命令查看响应速度 :
- 如果响应慢但是返回个数不多这个很可能是 jdk 差异 目前已知
openJ9 jdk
可能出现这样的情况 - 如果响应出很多进程,并且实际上未运行这么多进程排查方法如下:
- 可能是因为平时关闭 java 进程均使用
kill -9 xxx
,这样方式可能产生僵尸进程 - jps 命令实际上是有文件缓存的,在 linux 服务器上目录为:
/tmp/hsperfdata_$USER
($USER是启动Java程序的用户)
- 可能是因为平时关闭 java 进程均使用
# 获取项目状态超时
如果在节点(插件端)控制台或者项目列表中出现一直没有显示项目状态,或者出现提示超时信息。 这种一般是获取项目状态超时,因为 jpom 针对 java 程序获取状态默认使用 jps 命令来处理,据了解可能在不同的 jdk 中 jps 命令存在一定差异,可能出现 jps 命令响应很慢(openJ9 )
解决办法有如下:
- 配置节点超时时间 + 配置前端请求超时时间(前端请求超时时间在服务端 extConfig 中配置)
- 跟换 jdk(建议使用 openjdk) 或者排查 是否出现异常进程
- 升级 jpom 版本,2.8.18+ 优化过批量获取项目状态相关逻辑,会缩短整个接口耗时
帮助我们改善此文档 (opens new window)
上次更新: 2022/07/25, 16:56:56
- 01
- 使用 gradle 本地构建打包项目并发布到节点08-08
- 02
- 如何开启 h2-console web 访问功能08-05
- 03
- 在线管理 SSH 终端以及上传文件(SFTP)和执行命令历史08-01