这个系列应该改个名字,叫做java 命令行窗口(运行在windows环境下)突然退出,但是端口号存在,java虚拟机进程也存在。 昨天出差到客户现场一番排查。排除了之前的一系列推测(根据程序日志发现,程序异常退出是有...
这个系列应该改个名字,叫做java 命令行窗口(运行在windows环境下)突然退出,但是端口号存在,java虚拟机进程也存在。
昨天出差到客户现场一番排查。排除了之前的一系列推测(根据程序日志发现,程序异常退出是有规律的,每3小时一次,在57分异常退出)
- 内存溢出:程序退出后未生成dump文件,且用jconsole显示内存一直正常。
- 客户计算机是否有异常:查看系统日志、cpu,内存(发生问题时间点的)都一切正常。
- 网络请求http连接未释放,连接池占满假死:程序已经优化,排除httpclient使用问题导致连接异常,且在cmd下查看netstat显示正常。
- 数据库连接未回收,卡死:优化数据库连接配置参数,并查看发生故障时的连接,显示正常。
就在我一筹莫展,几近放弃的时候客户UPS有问题,意外让服务器重启使我找到了问题的所在。
程序重启后,有些开机自动运行程序,这时候我手贱在cmd下用命令netstat -ano|findstr 8083(我的程序端口),竟然以为的发现,是启动着的。。。。。。。。。。。而我的程序是没有配置开机自动运行的,这个时候我才想起来会不会是有其他程序跟我是一样的端口。(我之前也不是没有想到过端口占用的问题,但是我的命令行程序在端口被占用状况下,运行后没几秒就会自动退出,然后在错误日志种提示 Address is already benn used,然而这个搞笑的是,我的程序如果先启动,另外一个也是用8083端口的程序后启动,他是个exe程序,不会自动退出,但是另外会启动一个守护进程,每3个小时查看一次,然后把我的程序给干掉了,把他的程序给启动起来)因此每次我查看netstat的时候,发现8083端口还在,给我问题排查产生了误解。现在想想问题原因很坑爹,但是排查过程当中也不是没有收获,在这些弯路之中,更深入的了解了jvm、httpclient连接池、数据库连接池相关的知识。
至此,问题得到解决
本文标题为:java内存泄漏问题排查(三)
基础教程推荐
- springboot自定义starter方法及注解实例 2023-03-31
- Java实现线程插队的示例代码 2022-09-03
- Java数据结构之对象比较详解 2023-03-07
- Java文件管理操作的知识点整理 2023-05-19
- Java并发编程进阶之线程控制篇 2023-03-07
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- java基础知识之FileInputStream流的使用 2023-08-11
- Java实现查找文件和替换文件内容 2023-04-06
- java实现多人聊天系统 2023-05-19