标签:服务 Java 记录 报错 memory 一些 bit root
背景
经常遇到一些关于 linux 服务器相关的报错,也挺有意思,记录之
there is insufficient memory for the java runtime
问题发生:这是怎样发生的呢,在一个服务器上,把一个服务停掉了(服务本来是用 root 起的)。停掉后,因为不想用root做这样的操作,于是切换到了普通用户,再去起这个服务。
就报了这个错,乍一看,应该是内存不够,但看了一下物理内存,是妥妥的足够的,这就奇怪了。怎么回事呢?知识盲区。
然后网上查了一下,其实是查到了结果的。此暂时不说。
先说解决方案,
因为刚才服务还在运行中,所以,这个服务肯定是没问题的,资源也肯定是可以的,所以问题出现在哪里呢? 做了什么操作?——切换了一个账号!
是的,就是因为切换了一个账号,服务才起不来的,换回 root, 服务果然就能够起来了。所以,两个账号之前,什么区别?
再看回,那个报错,其实它有说到一个点:
报错文件内容:
查看代码
# There is insufficient memory for the Java Runtime Environment to continue.
# Cannot create GC thread. Out of system resources.
# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Use 64 bit Java on a 64 bit OS
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (gcTaskThread.cpp:46), pid=17285, tid=47629249568816
#
# JRE version: 6.0_43-b01
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.14-b01 mixed mode linux-amd64 compressed oops)
问题分析:
可能1:
物理资源不够(不是)
可能2:
系统进程数到达了上限,然后通过指令 ulimit -a 对比 普通用户 与 root 用户间的区别,果然发现了不同
普通用户的 ulimit -a 结果有一个值
max user processes 为 1024
但 root 用户的这个值是 127252 原因就在这里!
找到原因,就好解决了。但线上服务器,不敢轻易修改,就暂且用 root 起一下吧。害。
标签:服务,Java,记录,报错,memory,一些,bit,root 来源: https://www.cnblogs.com/aaacarrot/p/15956774.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。