运行一段时间服务占内存会很大
在本地telnet服务端口都不通
telnet 127.0.0.1 8082
重启服务之后问题会消失,但是运行一段时间又会重现
运行一段时间服务占内存会很大
在本地telnet服务端口都不通
telnet 127.0.0.1 8082
重启服务之后问题会消失,但是运行一段时间又会重现
ssh不通你是去机房重启的吗?
单说这个问题,应该就是内存泄漏了。
可以启动参数加上-XX:+PrintGCDetails 看一下垃圾回收情况。
再就是多长时间开始卡,提前一会去dump一下进程的内存情况看看。
15 回答8.4k 阅读
8 回答6.2k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
3 回答3.6k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
telnet端口不通,大概率是服务停止了,这时候可以使用ps命令检查进程是否还活着,大概率进程已经不在了,然后检查服务日志,oom一般都会有日志输出错误信息。
至于你说的占内存很大,这个具体的数值是多少,java服务的内存分配是在启动的时候通过xmx,xms,xss这些jvm参数进行配置的,java进程占用内存是有上限的,是可配置的,到达了上限,就会因为内存不足而停止程序。
可以观测一下系统可用的内存,java配置的内存,实际占用的内存这些数值,可以简单的用top/free命令观测下内存变化,或者使用jmap展开具体的堆栈情况,寻找主要的占用代码。
以上是比较基本的检查java运行和jvm相关的思路,具体的命令可以百度一下,包括jvm各种线上参数,都可以了解一下,对于java程序员来说,比较重要,写代码只是一部分,能用才是最重要的。
至于ssh连不上,因为ssh命令是系统级别的独立进程,默认是22端口,原则上和其他进程没有关系,比如java程序,如果真的是ssh连接不上,那可能和你的程序没啥关系,更多可能是操作系统或者硬件有问题,我遇到过机房温控失灵,夏天一升温,服务器就挂了
当然也不排除你的程序涉及了很多底层操作或者就是内存分配不合理,导致直接做掉了操作系统