在RHEL7.8上安装elastic 7.5会导致jna导致内存冲突sig=6

z4iuyo4d  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(2)|浏览(670)

我正在os上安装全新的elasticsearch 7.5:red hat enterprise linux server 7.8版(maipo)
在服务启动时,我遇到了严重的故障。以下是服务信息提供的内容

● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)
   Active: failed (Result: signal) since Tue 2020-08-25 11:34:39 CEST; 7min ago
     Docs: http://www.elastic.co
  Process: 102777 ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet (code=killed, signal=ABRT)
 Main PID: 102777 (code=killed, signal=ABRT)
   CGroup: /system.slice/elasticsearch.service
Aug 25 11:34:34 sv-1348lvd44.esante.local systemd[1]: Starting Elasticsearch...
Aug 25 11:34:35 sv-1348lvd44.esante.local elasticsearch[102777]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated...lease.
Aug 25 11:34:39 sv-1348lvd44.esante.local systemd[1]: elasticsearch.service: main process exited, code=killed, status=6/ABRT
Aug 25 11:34:39 sv-1348lvd44.esante.local systemd[1]: Failed to start Elasticsearch.
Aug 25 11:34:39 sv-1348lvd44.esante.local systemd[1]: Unit elasticsearch.service entered failed state.
Aug 25 11:34:39 sv-1348lvd44.esante.local systemd[1]: elasticsearch.service failed.

使用journalctl-xe时

Aug 25 11:34:38 sv-1348lvd44.esante.local audispd[824]: node=sv-1348lvd44.esante.local type=ANOM_ABEND msg=audit(1598348078.836:208066): auid=429496  uid=995 gid=991 ses=4294967295 subj=system_u:system_r:unconfined_service_t:s0 pid=102777 comm="java" reason="memory violation" sig=6
Aug 25 11:34:39 sv-1348lvd44.esante.local systemd[1]: elasticsearch.service: main process exited, code=killed, status=6/ABRT
Aug 25 11:34:39 sv-1348lvd44.esante.local systemd[1]: Failed to start Elasticsearch.

当我查看垃圾堆的时候。


# 

# A fatal error has been detected by the Java Runtime Environment:

# 

# SIGSEGV (0xb) at pc=0x00007f4818939b85, pid=52870, tid=52933

# 

# JRE version: OpenJDK Runtime Environment (13.0.1+9) (build 13.0.1+9)

# Java VM: OpenJDK 64-Bit Server VM (13.0.1+9, mixed mode, sharing, tiered, compressed oops, concurrent mark sweep gc, linux-amd64)

# Problematic frame:

# C  [jna515356041985641679.tmp+0x12b85]  ffi_prep_closure_loc+0x15

[OS:Red Hat Enterprise Linux Server release 7.8 (Maipo)
uname:Linux 3.10.0-1127.10.1.el7.x86_64 #1 SMP Tue May 26 15:05:43 EDT 2020 x86_64
libc:glibc 2.17 NPTL 2.17
rlimit: STACK 8192k, CORE 0k, NPROC 4096, NOFILE 65535, AS infinity, DATA infinity, FSIZE infinity
load average:0.08 0.03 0.05
.../...

它在centos上就像一个符咒,什么都不做。
对于rhel,我已经通过在/etc/sysconfig/elasticsearch中添加es\u tmpdir=/var/es temp修复了关于jna的问题

记忆似乎很好。这是一个全新的虚拟机(没有应用程序登录到/var/logs)似乎应该支持这个版本,我用-xms2g-xmx2g、-xms1g-xmx1g、-xms512m-xmx512m测试过,但有相同的错误。
我不明白出了什么问题。我的下一步是使用elasticsearch的另一个版本7进行测试。

9rbhqvlz

9rbhqvlz1#

出于某种原因,将tmpdir var添加到/etc/sysconfig/elasticsearch中(在7.7.1上)并将其指向与-djava.io.tmpdir相同的位置。
i、 e.tmpdir=“/usr/share/elasticsearch/tmp”(在我的例子中,我实际使用了/var/lib/elasticsearch/tmp,拥有0755权限)。
我不知道为什么,如果我看“ps-aef”,它也不会改变所使用的调用字符串。但是仅仅拥有-djava.io.tmpdir是不够的。
这使我能够在不删除/tmp和/dev/shm上的noexec的情况下让它工作。

ou6hu8tu

ou6hu8tu2#

经过一天的努力,我终于找到了解决办法https://discuss.elastic.co/t/elasticsearch-v7-6-2-failed-to-start-killed-by-sigabrt-on-rhel-7-7-urgent/231039/11 来自伊凡·卡拉扎纳
我在这里放了一份要执行的步骤:
嗨,如果您正在rhel安装中应用安全合规性,则必须更改将使用elasticsearch作为java的tmp目录的>路径。
在/etc/elasticsearch/jvm.options处取消注解 -Djava.io.tmpdir=${ES_TMPDIR} 加载项/etc/sysconfig/elasticsearch ES_TMPDIR=/usr/share/elasticsearch/tmp 创建/usr/share/elasticsearch/tmp目录,确保所有者和组>是elasticsearch,权限是0755
最后,确保/dev/shm没有命令的noexec属性: mount | grep tmpfs | grep '/dev/shm' 预期结果: tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel) 如果得到如下输出: tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,seclabel) 在/etc/fstab中添加或修改以下行: tmpfs /dev/shm tmpfs defaults,nodev,nosuid 0 0 我也有同样的问题,这对我有效。希望我能帮助你
似乎是已知的弹性,但没有记录正确。不要理解为什么tmpfs应该在noexec中。最好有jnaMaven的反馈。

相关问题