阿里云主机每小时产生一个hs_err_pid.log的文件,请问是什么原因?

时间:2023-01-22 11:50:13
阿里云主机每小时产生一个hs_err_pid<xxxxx>.log的文件,内容如下:
]# cat hs_err_pid20341.log
#
# There is insufficient memory for the Java Runtime Environment to continue.
# pthread_getattr_np
# 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 (os_linux_x86.cpp:715), pid=20341, tid=140397934696192
#
# JRE version: 6.0_45-b06
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.45-b01 mixed mode linux-amd64 compressed oops)

---------------  T H R E A D  ---------------

Current thread (0x00007fb0ec080000):  JavaThread "Signal Dispatcher" daemon [_thread_new, id=20346, stack(0x0000000000000000,0x0000000000000000)]

Stack: [0x0000000000000000,0x0000000000000000],  sp=0x00007fb0f1064860,  free space=137107358098k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x861e05]

free查看了下系统的内存:
]# free
             total       used       free     shared    buffers     cached
Mem:       1920740    1476204     444536          0     164140     354808
-/+ buffers/cache:     957256     963484
Swap:            0          0          0

系统中运行了一个tomcat+1web应用,想请问大侠们这个是什么原因?如何解决?

24 个解决方案

#1


没swap分区?全是0?

#2


# 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=

#3


to freesiazer0:是的,没有swap分区
to zhblue:catalina.sh配置的参数如下:
JAVA_OPTS="-server -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxNewSize=128m -XX:MaxPermSize=256m -Djava.awt.headless=true"

#4


引用
There is insufficient memory for the Java Runtime Environment to continue.

加物理内存不现实的话,先加SWAP吧。

#5


引用 4 楼 ljc007 的回复:
引用
There is insufficient memory for the Java Runtime Environment to continue.

加物理内存不现实的话,先加SWAP吧。

用free查看了内存,貌似内存还够。

#6


引用 5 楼 u012961517 的回复:
用free查看了内存,貌似内存还够。

你是觉得free命令看到used达到100%才说明内存不够了对吗?
加点SWAP吧,也许你会改变看法。

#7


Mark
我也碰到同样的问题了,做了SWAP不知道有没有效果,等结果。

#8


我也碰到同样的问题了,等结果

#9


楼主试下,
JAVA_OPTS="-server -Xms64m -Xmx384m -XX:MaxNewSize=192m -XX:ReservedCodeCacheSize=192m -XX:PermSize=192m" 

将-Xms改小点,并且避免多个java程序同时启动,我试了下,没那个问题了

#10


晕。。过了半个多小时,又出现这样的错误了。。

#11


我已经试过了很多方法了,
1、修改open file 打开数
2、增加wsap 
3、还改了一些其他的问题
4、tomcat jvm内存配置
都不奏效

我发现一个问题,我新加一个tomcat 就会每小时多生成一个此错误文件,暂时还没找到原因,继续ing....

#12


提交了阿里的工单,他们直接把我分配给了第三方运维,搞笑的是这些第三方的运维的服务范围都只限于php环境的,让我情何以堪。

#13


网上有说是数据库驱动包的问题,我换了一个驱动包,不知道能否解决。 阿里云主机每小时产生一个hs_err_pid.log的文件,请问是什么原因?

#14


跟驱动包关系应该不大。。我这错误也就最近才出现的,以前一直都没问题。。不知道是不是因为程序问题的导致的内存泄漏

#15


jstack -l 1538 >/opt/xx.txt

用这个命令查下进程吧,我看你是因为这个线程:JavaThread "Signal Dispatcher" 
查下是哪个程序跑的线程

#16


找到组织的赶脚,我也是阿里云主机下的这个崩溃,唯一不同时,楼主的是JavaThread "Signal Dispatcher",而我这里是JavaThread "Finalizer" daemon ,不知道楼主或其他难友找到原因了么?有意思的是,这个崩溃进程并不是tomcat运行的进程,我知道整点时都JVM都干了什么,我看PID数占用了20多个。之所以要解决它是因为tomcat进程会莫名直接没了,tomcat中无任何异常输出,就跟被kill掉一样,不知道是它引起的不。

#17


该回复于2015-02-25 15:55:07被管理员删除

#18


我也碰到这个问题
安装java-1.6.0-openjdk + tomcat 6.0.43 没有安装其它应用,每个小时在根目录下都产生一个hs_err_pid*.log

把jdk换成1.7.0,其它环境不改变,照样每个小时在根目录下都产生一个hs_err_pid*.log

把jdk换成1.8.0,问题解决,不生成hs_err_pid*.log文件了

不知道是什么原因,关键是我要部署的应用要求的jdk环境是1.6.0或者1.7.0啊

而且我另一台也是阿里云的服务器,是以前部署的jdk1.6.0+tomcat6.0.43就没有这个问题
查了下无问题的服务器Linux版本是
[root@AY131206100841575623Z /]# uname -a
Linux AY131206100841575623Z 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

有这个问题的服务器版本是:
 [root@iZ25zle1xpoZ /]# uname -a
Linux iZ25zle1xpoZ 2.6.32-504.12.2.el6.x86_64 #1 SMP Wed Mar 11 22:03:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

#19


http://www.oracle.com/technetwork/java/javase/8-known-issues-2157115.html

高度怀疑是此页最后一个bug

Area: HotSpot / gc 

Synopsis

    Crashes due to failure to allocate large pages.

    On Linux, failures when allocating large pages can lead to crashes. When running JDK 7u51 or later versions, the issue can be recognized in two ways:

        Before the crash happens, one or more lines similar to the following example will have been printed to the log:

        os::commit_memory(0x00000006b1600000, 352321536, 2097152, 0) failed;
        error='Cannot allocate memory' (errno=12); Cannot allocate large pages, 
        falling back to regular pages

        If a file named hs_err is generated, it will contain a line similar to the following example:

        Large page allocation failures have occurred 3 times

    The problem can be avoided by running with large page support turned off, for example, by passing the "-XX:-UseLargePages" option to the java binary.

#20


手动安装jdk8.0并切换后,10小时未出现该日志文件。

#21


是阿里云盾的问题 呵呵 !写程序不下工 出现了内存泄露, 当阿里云盾到增加内存时候 他用的方式是kill 来杀掉 这个周期是1个小时。
解决办法: 1 aegis 这个文件在/etc/init.d 删除 重启  这样就停止了阿里云盾。
                    2 限制 root的 内存占用大小 ,在被的用户启动tomcat


希望阿里云的程序猿们也认真的查内存泄漏吧。

#22


我也出现同样的问题  而且每次都显示在根目录下 感觉很别扭 不知道那个地方能设置这些文件的显示位置

#23


不知道各位是否还在关注此问题...我这边有两台机器,一台是安装的JDK1.7rpm包的会出现这个问题,另一台是直接解压JDK1.7tar包的就不会有这个问题,都跑了3个tomcat

#24


引用 21 楼 getwilling 的回复:
是阿里云盾的问题 呵呵 !写程序不下工 出现了内存泄露, 当阿里云盾到增加内存时候 他用的方式是kill 来杀掉 这个周期是1个小时。
解决办法: 1 aegis 这个文件在/etc/init.d 删除 重启  这样就停止了阿里云盾。
                    2 限制 root的 内存占用大小 ,在被的用户启动tomcat


希望阿里云的程序猿们也认真的查内存泄漏吧。


21楼 正解,方法可用。我建议不要删除。最好改文件名

#1


没swap分区?全是0?

#2


# 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=

#3


to freesiazer0:是的,没有swap分区
to zhblue:catalina.sh配置的参数如下:
JAVA_OPTS="-server -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxNewSize=128m -XX:MaxPermSize=256m -Djava.awt.headless=true"

#4


引用
There is insufficient memory for the Java Runtime Environment to continue.

加物理内存不现实的话,先加SWAP吧。

#5


引用 4 楼 ljc007 的回复:
引用
There is insufficient memory for the Java Runtime Environment to continue.

加物理内存不现实的话,先加SWAP吧。

用free查看了内存,貌似内存还够。

#6


引用 5 楼 u012961517 的回复:
用free查看了内存,貌似内存还够。

你是觉得free命令看到used达到100%才说明内存不够了对吗?
加点SWAP吧,也许你会改变看法。

#7


Mark
我也碰到同样的问题了,做了SWAP不知道有没有效果,等结果。

#8


我也碰到同样的问题了,等结果

#9


楼主试下,
JAVA_OPTS="-server -Xms64m -Xmx384m -XX:MaxNewSize=192m -XX:ReservedCodeCacheSize=192m -XX:PermSize=192m" 

将-Xms改小点,并且避免多个java程序同时启动,我试了下,没那个问题了

#10


晕。。过了半个多小时,又出现这样的错误了。。

#11


我已经试过了很多方法了,
1、修改open file 打开数
2、增加wsap 
3、还改了一些其他的问题
4、tomcat jvm内存配置
都不奏效

我发现一个问题,我新加一个tomcat 就会每小时多生成一个此错误文件,暂时还没找到原因,继续ing....

#12


提交了阿里的工单,他们直接把我分配给了第三方运维,搞笑的是这些第三方的运维的服务范围都只限于php环境的,让我情何以堪。

#13


网上有说是数据库驱动包的问题,我换了一个驱动包,不知道能否解决。 阿里云主机每小时产生一个hs_err_pid.log的文件,请问是什么原因?

#14


跟驱动包关系应该不大。。我这错误也就最近才出现的,以前一直都没问题。。不知道是不是因为程序问题的导致的内存泄漏

#15


jstack -l 1538 >/opt/xx.txt

用这个命令查下进程吧,我看你是因为这个线程:JavaThread "Signal Dispatcher" 
查下是哪个程序跑的线程

#16


找到组织的赶脚,我也是阿里云主机下的这个崩溃,唯一不同时,楼主的是JavaThread "Signal Dispatcher",而我这里是JavaThread "Finalizer" daemon ,不知道楼主或其他难友找到原因了么?有意思的是,这个崩溃进程并不是tomcat运行的进程,我知道整点时都JVM都干了什么,我看PID数占用了20多个。之所以要解决它是因为tomcat进程会莫名直接没了,tomcat中无任何异常输出,就跟被kill掉一样,不知道是它引起的不。

#17


该回复于2015-02-25 15:55:07被管理员删除

#18


我也碰到这个问题
安装java-1.6.0-openjdk + tomcat 6.0.43 没有安装其它应用,每个小时在根目录下都产生一个hs_err_pid*.log

把jdk换成1.7.0,其它环境不改变,照样每个小时在根目录下都产生一个hs_err_pid*.log

把jdk换成1.8.0,问题解决,不生成hs_err_pid*.log文件了

不知道是什么原因,关键是我要部署的应用要求的jdk环境是1.6.0或者1.7.0啊

而且我另一台也是阿里云的服务器,是以前部署的jdk1.6.0+tomcat6.0.43就没有这个问题
查了下无问题的服务器Linux版本是
[root@AY131206100841575623Z /]# uname -a
Linux AY131206100841575623Z 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

有这个问题的服务器版本是:
 [root@iZ25zle1xpoZ /]# uname -a
Linux iZ25zle1xpoZ 2.6.32-504.12.2.el6.x86_64 #1 SMP Wed Mar 11 22:03:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

#19


http://www.oracle.com/technetwork/java/javase/8-known-issues-2157115.html

高度怀疑是此页最后一个bug

Area: HotSpot / gc 

Synopsis

    Crashes due to failure to allocate large pages.

    On Linux, failures when allocating large pages can lead to crashes. When running JDK 7u51 or later versions, the issue can be recognized in two ways:

        Before the crash happens, one or more lines similar to the following example will have been printed to the log:

        os::commit_memory(0x00000006b1600000, 352321536, 2097152, 0) failed;
        error='Cannot allocate memory' (errno=12); Cannot allocate large pages, 
        falling back to regular pages

        If a file named hs_err is generated, it will contain a line similar to the following example:

        Large page allocation failures have occurred 3 times

    The problem can be avoided by running with large page support turned off, for example, by passing the "-XX:-UseLargePages" option to the java binary.

#20


手动安装jdk8.0并切换后,10小时未出现该日志文件。

#21


是阿里云盾的问题 呵呵 !写程序不下工 出现了内存泄露, 当阿里云盾到增加内存时候 他用的方式是kill 来杀掉 这个周期是1个小时。
解决办法: 1 aegis 这个文件在/etc/init.d 删除 重启  这样就停止了阿里云盾。
                    2 限制 root的 内存占用大小 ,在被的用户启动tomcat


希望阿里云的程序猿们也认真的查内存泄漏吧。

#22


我也出现同样的问题  而且每次都显示在根目录下 感觉很别扭 不知道那个地方能设置这些文件的显示位置

#23


不知道各位是否还在关注此问题...我这边有两台机器,一台是安装的JDK1.7rpm包的会出现这个问题,另一台是直接解压JDK1.7tar包的就不会有这个问题,都跑了3个tomcat

#24


引用 21 楼 getwilling 的回复:
是阿里云盾的问题 呵呵 !写程序不下工 出现了内存泄露, 当阿里云盾到增加内存时候 他用的方式是kill 来杀掉 这个周期是1个小时。
解决办法: 1 aegis 这个文件在/etc/init.d 删除 重启  这样就停止了阿里云盾。
                    2 限制 root的 内存占用大小 ,在被的用户启动tomcat


希望阿里云的程序猿们也认真的查内存泄漏吧。


21楼 正解,方法可用。我建议不要删除。最好改文件名