背景,某运维小白搭建ES 7.17.7 集群重启ES集群出现启动es集群情况,服务自动关闭,错误日志如下:
[2023-04-12T20:53:57,108][INFO ][o.e.x.m.p.NativeController] [10.0.0.1] Native controller process has stopped - no new native processes can
be started
[2023-04-12T20:53:57,109][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [10.0.0.1] uncaught exception in thread [process reaper (pid 6
3910)]
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThread")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:485) ~[?:?]
at java.security.AccessController.checkPermission(AccessController.java:1068) ~[?:?]
at java.lang.SecurityManager.checkPermission(SecurityManager.java:411) ~[?:?]
at org.elasticsearch.secure_sm.SecureSM.checkThreadAccess(SecureSM.java:160) ~[?:7.17.7]
at org.elasticsearch.secure_sm.SecureSM.checkAccess(SecureSM.java:120) ~[?:7.17.7]
at java.lang.Thread.checkAccess(Thread.java:2360) ~[?:?]
at java.lang.Thread.setDaemon(Thread.java:2308) ~[?:?]
at java.lang.ProcessHandleImpl.lambda$static$0(ProcessHandleImpl.java:103) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:637) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:928) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.java:1021) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1158) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.lang.Thread.run(Thread.java:1589) [?:?]
at jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) ~[?:?]
现象:
1、看到需要关闭swap可以提升稳定性,装好ES后关闭swap并重启服务器发现ES无法启动;
2、回退swap后,启动成功;
3、关闭后故障依旧;
4、经检查发现内存使用率有点高,es的master节点给的只有 2C/4G 的基础配置;
5、检查发现ES的默认jvm配置没有修改,将jvm的配置调整为2G,重启ES 成功
解决方案:
配置 jvm.options
-Xms2g
-Xmx2g
经验总结:
1、仔细看日志,根据报错、失败的日志找原因,google大法加持可以解决80%问题;
2、按图索骥,从各项基本备注逐一检查,也能解决剩下的问题中的70%左右;
3、剩下的部分就看人品了,说不定什么地方给你有个大坑,跳下去爬不起来的那种。