问题描述
我正在OS:Red Hat Enterprise Linux Server 7.8(Maipo)操作系统上安装全新的Elasticsearch 7.5
在启动服务时,我遇到了严重的失败。这是服务信息所提供的
● 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,status=6/ABRT
Aug 25 11:34:39 sv-1348lvd44.esante.local systemd[1]: Failed to start Elasticsearch.
当我查看转储hs_err_pidXXXX时。
#
# 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_TMPDIR = / var / es-temp 来修复有关 JNA 的问题>作为
内存似乎正常。这是一个全新的VM。 (没有应用程序登录到/ var / logs) 似乎应该支持此版本 我使用-xms2g -Xmx2g,-xms1g -Xmx1g,-xms512m -Xmx512m进行了测试,但是存在相同的错误。
我不明白怎么了。我的下一步是测试Elasticsearch的另一个版本7。
解决方法
经过1天的努力,我在Ivan_A_Carrazana_C的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,noexec,seclabel)
在/ etc / fstab中添加或修改以下行:tmpfs /dev/shm tmpfs defaults,nosuid 0 0
我遇到了同样的问题,这对我有用。希望我能帮助您
似乎是众所周知的,但没有正确记录。不要理解为什么tmpfs应该在noexec中。希望得到JNA专家的反馈。
,由于某种原因,将TMPDIR var添加到/ etc / sysconfig / elasticsearch起作用(在7.7.1上),并将其指向与-Djava.io.tmpdir相同的位置。
即 TMPDIR =“ / usr / share / elasticsearch / tmp” (就我而言,我实际上使用了具有0755权限的/ var / lib / elasticsearch / tmp)。
我不能说为什么,并且如果我查看'ps -aef',它也不会更改使用的调用字符串。但是仅仅拥有-Djava.io.tmpdir是不够的。
这使我能够在不删除/ tmp和/ dev / shm上的noexec的情况下正常工作。