java 后台 无故中断

x_xx_xxx_xxxx 2018-09-03 09:15:59
本人使用了java写了一套循环处理(while(1))分析的服务逻辑,但在运行1000多次后会无故停止,并没报错。希望大家能给提一些思路。

环境:
本人在 Ubuntu 16.04 上跑的java后台,后期会转移到centos 上。曾经在windows server 2008 R2 上运行类似的服务,跑上万的程序并没无故停止运行的问题。
...全文
989 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
x_xx_xxx_xxxx 2018-09-13
  • 打赏
  • 举报
回复
时隔多次,又再一次运行了一千次后无故停止运行,并不报错。没有 OOME。难道是我用的Ubuntu,并不适合长久运行服务?
x_xx_xxx_xxxx 2018-09-11
  • 打赏
  • 举报
回复
引用 21 楼 hcc_new_one_object 的回复:
不建议手动gc,gc内部有自己的回收机制的,可以简单去看一下gc回收的。

我之前看了看GC,为什么不能手动GC?
x_xx_xxx_xxxx 2018-09-11
  • 打赏
  • 举报
回复
引用 20 楼 walkonthesky 的回复:
windows上跑没问题,基本排除程序本身的问题

依经验判断,启动时候增加nohup参数,看看这个问题能否消失
类似:java -jar xxx.jar -nohup


好的!谢谢,在centos 上跑服务时可以加上这个参数。
x_xx_xxx_xxxx 2018-09-10
  • 打赏
  • 举报
回复
引用 11 楼 IUPRG 的回复:
关注一下。
不过,我觉得是不是 while(1)内的代码执行中间有问题,然后一直挂起,直至内存不够溢出?

“然后一直挂起” ?? 我可以监视线程,看看是否有一只堆积的线程?嗯嗯,应该是一种思路。谢谢您
x_xx_xxx_xxxx 2018-09-10
  • 打赏
  • 举报
回复
引用 13 楼 qazwsxhai 的回复:
长期运行的程序注意有空gc一下。

嗯嗯,我在程序中,每循环一次,GC一次。
x_xx_xxx_xxxx 2018-09-10
  • 打赏
  • 举报
回复
引用 12 楼 weixin_40319552 的回复:
内存不够了?内存不够了?


内存不够了,是不是应该报错的?但是这个一直没报错,不太清楚。这几天公司搬家,一直没处理这件事,还没得出结论。
小楼o 2018-09-10
  • 打赏
  • 举报
回复
不建议手动gc,gc内部有自己的回收机制的,可以简单去看一下gc回收的。
walkonthesky 2018-09-10
  • 打赏
  • 举报
回复
windows上跑没问题,基本排除程序本身的问题

依经验判断,启动时候增加nohup参数,看看这个问题能否消失
类似:java -jar xxx.jar -nohup
x_xx_xxx_xxxx 2018-09-10
  • 打赏
  • 举报
回复
引用 17 楼 qq_40794696 的回复:
内存溢出。。。?

不确定,怀疑是这个。最近一直连接不上服务器,也没能调试、查找原因。
x_xx_xxx_xxxx 2018-09-10
  • 打赏
  • 举报
回复
引用 4 楼 maradona1984 的回复:
jvisualvm监控下呗,图形化的看起来形象点

好的,学学这个,对开发挺好的。
隐语者 2018-09-10
  • 打赏
  • 举报
回复
内存溢出。。。?
qazwsxhai 2018-09-06
  • 打赏
  • 举报
回复
长期运行的程序注意有空gc一下。
weixin_40319552 2018-09-05
  • 打赏
  • 举报
回复
引用 0 楼 x_xx_xxx_xxxx的回复:
本人使用了java写了一套循环处理(while(1))分析的服务逻辑,但在运行1000多次后会无故停止,并没报错。希望大家能给提一些思路。

环境:
本人在 Ubuntu 16.04 上跑的java后台,后期会转移到centos 上。曾经在windows server 2008 R2 上运行类似的服务,跑上万的程序并没无故停止运行的问题。
内存不够了?内存不够了?
  • 打赏
  • 举报
回复
关注一下。
不过,我觉得是不是 while(1)内的代码执行中间有问题,然后一直挂起,直至内存不够溢出?
月明星稀灬 2018-09-04
  • 打赏
  • 举报
回复
首先分析一下是因素
1.外部
虚机的父级纳管系统出来问题否,父级纳管端口是否稳定,
2.内部
运行内存分配的国小导致程序内存溢出否,程序写的是否规范,与其他平台的TCP/UDP等交互是否存在超时,连接数过多等待过多的情况

能贴一下部分代码观瞻一下吗。。
x_xx_xxx_xxxx 2018-09-04
  • 打赏
  • 举报
回复
引用 6 楼 qq_41540648 的回复:
运行终止可能出现异常或内存溢出导致服务器直接强制挂掉

好的,谢谢您!我对内存状态进行监控。
x_xx_xxx_xxxx 2018-09-04
  • 打赏
  • 举报
回复
引用 7 楼 xiekuntarena 的回复:
首先分析一下是因素
1.外部
虚机的父级纳管系统出来问题否,父级纳管端口是否稳定,
2.内部
运行内存分配的国小导致程序内存溢出否,程序写的是否规范,与其他平台的TCP/UDP等交互是否存在超时,连接数过多等待过多的情况

能贴一下部分代码观瞻一下吗。。

谢谢您提供思路,我再依照你提供思路进行测试,曾经出现过多次 redis 链接超时。也会再对内存状态进行监控等。但是现在运行了一天多了,问题没有复现,没能成功追查到原因。
至于代码,我定位不到具体章节,不知道该怎么贴,很无头绪。
x_xx_xxx_xxxx 2018-09-04
  • 打赏
  • 举报
回复
引用 5 楼 Ragin 的回复:
-XX:+HeapDumpOnOutOfMemoryError 应用启动的时候jvm加这个参数。
如果是oom异常会生成dump文件;
或者用jmap -dump命令生成dump文件,
然后用jvisualvm或者mat工具分析dump文件。


恩恩!谢谢您提供思路和解决方法工具!
maradona1984 2018-09-03
  • 打赏
  • 举报
回复
jvisualvm监控下呗,图形化的看起来形象点
x_xx_xxx_xxxx 2018-09-03
  • 打赏
  • 举报
回复
引用 1 楼 maradona1984 的回复:
无故中断,还是得看下异常消息,一般内存溢出概率很大

root@roy-virtual-machine:~# cat /proc/meminfo
MemTotal: 4046120 kB
MemFree: 1157964 kB
MemAvailable: 1225132 kB
Buffers: 14440 kB
Cached: 270652 kB
SwapCached: 9040 kB
Active: 1450356 kB
Inactive: 886180 kB
Active(anon): 1326672 kB
Inactive(anon): 760212 kB
Active(file): 123684 kB
Inactive(file): 125968 kB
Unevictable: 64 kB
Mlocked: 64 kB
SwapTotal: 4192252 kB
SwapFree: 711032 kB
Dirty: 33092 kB
Writeback: 0 kB
AnonPages: 2042672 kB
Mapped: 190696 kB
Shmem: 35440 kB
Slab: 89940 kB
SReclaimable: 45368 kB
SUnreclaim: 44572 kB
KernelStack: 12832 kB
PageTables: 54864 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6215312 kB
Committed_AS: 11326644 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 294848 kB
DirectMap2M: 3899392 kB
DirectMap1G: 2097152 kB
加载更多回复(4)

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧