Ошибка нехватки памяти os_linux.cpp - PullRequest
0 голосов
/ 28 апреля 2018

У нас произошел сбой рабочего кота, который сгенерировал файл hss_err_pid. Это была информация в ней -

# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 19327352832 bytes for committing reserved memory.
# 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.cpp:2673), pid=12940, tid=140179071637248

В соответствии с моим пониманием, мы должны были проверить, нет ли в ней ОЗУ или пространства подкачки. Но это был не тот случай. Вот что показала верхняя команда -

 top - 10:14:58 up  4:44,  2 users,  load average: 0.10, 0.14, 0.43
 Tasks: 2737 total,   0 running, 2737 sleeping,   0 stopped,   0 zombie
 Cpu(s):  5.9%us,  1.4%sy,  0.2%ni, 92.2%id,  0.1%wa,  0.0%hi,  0.3%si,  0.0%st
 Mem:  32130824k total, 18671312k used, 13459512k free,    22892k buffers
 Swap:  4194300k total,        0k used,  4194300k free,   180232k cached

Tomcat потреблял 17 ГБ из общего объема выделенных 28 ГБ. Также у сервера было 32 ГБ оперативной памяти. Когда я искал похожие проблемы, большинство из них было связано с тем, что общее количество xms, выделенное для JVM, было больше, чем у сервера. Также не было запущенных других процессов ОС, которые занимали бы больше памяти. Есть ли какая-либо другая причина, которая могла бы оправдать этот файл журнала hs_err_pid?

...