Spring Boot为我们提供了操作系统进程PID以及Web服务器端口号输出到文件的能力,这对于我们做进程监控,查询端口信息等很有帮助。有时也会遇到SpringBoot工程cpu占用100%的情况,知道了PID进程号,就可以准确无误的定位哪个jar服务问题,便于排查分析相关信息,Kill掉进程等操作,下面来看下这种能力具体怎么使用~
- SpringBoot版本 2.4.5
使用方式
在SpringBoot工程下创建配置文件并粘贴代码,文件路径为src/main/resources/META-INF/spring.factories
示例配置:https://github.com/netbuffer/spring-boot-demo/blob/master/src/main/resources/META-INF/spring.factories
org.springframework.context.ApplicationListener=\
org.springframework.boot.context.ApplicationPidFileWriter,\
org.springframework.boot.web.context.WebServerPortFileWriter
spring.factories
运行效果
启动工程后,会在工程的根目录下生成application.pid文件,其中写入了操作系统PID进程编号;application.port文件,其中写入了web服务器端口号
这是IDEA下运行后的效果
这是打成jar包后执行的效果,会在jar包同级目录下生成对应文件
linux下,在知道PID后,可以执行如下指令查询进程下的线程情况
top -Hp your-pid
windows下根据PID,方便区分不同java进程对应不同的服务
网友评论