ES 彻底解决403报错

elasticsearch的403问题的根本原因是磁盘空间不够

项目用到es也是没什么经验的, 除了几张表同步, 全部日志也往里面写. (平均一个索引差不多500M吧)

终于有一天, 线上同步报错403. 查了下谷歌, 说是磁盘空间不够, 我一看, 还有3g呢, 就删除了比较老的日志索引, 按照谷歌到的read_only_allow_delete设置, 暂时解决了问题.

两个月后又发生了403错误, 一看又是只剩3g了, 那天懒病犯了, 还是删除日志设置read_only_allow_delete搞定

又是时隔差不多两个月的403, 随着用es的地方越来越多, 发生的这种情况影响的范围比较严重了, 我就想根治这个问题.

我们后来线上服务是有加磁盘的, 我就想好好利用这块磁盘做扩容.

1. 我谷歌Ubuntu extend disk space,查到什么lvextend,vextend各种扩容方案, 一看就头大, 我秒怂. 

2. 那么做迁移吧. 查了下es配置里面data路径, 确实可以有多个, 在测试服务器配多个路径(保持原路径,加入另一个盘的路径), 然后重启, 意外的是报了下面这个异常:

java.lang.ExceptionInInitializerError: null
	at java.lang.Class.forName0(Native Method) ~[?:1.8.0_212]
	at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_212]
	at org.elasticsearch.painless.lookup.PainlessLookupBuilder.addPainlessClass(PainlessLookupBuilder.java:170) ~[?:?]
	at org.elasticsearch.painless.lookup.PainlessLookupBuilder.build(PainlessLookupBuilder.java:686) ~[?:?]
	at org.elasticsearch.painless.PainlessScriptEngine.<init>(PainlessScriptEngine.java:109) ~[?:?]
	at org.elasticsearch.painless.PainlessPlugin.getScriptEngine(PainlessPlugin.java:89) ~[?:?]
	at org.elasticsearch.script.ScriptModule.<init>(ScriptModule.java:86) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.node.Node.<init>(Node.java:339) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.node.Node.<init>(Node.java:256) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.4.1.jar:6.4.1]
	at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.4.1.jar:6.4.1]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.4.1.jar:6.4.1]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.4.1.jar:6.4.1]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
	at java.time.chrono.JapaneseEra.<clinit>(JapaneseEra.java:179) ~[?:1.8.0_212]
	... 19 more

只有官方论坛上面有人提出来这个问题, 好像是上个月日本改元造成的. 要更新版本. 想到线上万一重启失败就gg了, 我又秒怂.

3. 扩展磁盘不会, 修改data路径也危险, 难道走投无路了? 突然我灵光一现, 在加硬盘之前创建过8G的swapfile. 干掉它不就行了?

简单易行傻瓜式! 我立马在新磁盘创建了个16G的swapfile然后启用. swapoff之前的那个8Gswapfile......

......

......

经过漫长的等待(半个多小时)

终于有反应了! 然后free -h, 确定确实解绑了, 小心的rm掉那个8G的swapfile

再打df, 看到磁盘空间还剩11G, 成功了!

这些空间可以多存好多索引, 太棒了!

猜你喜欢

转载自blog.csdn.net/u012452555/article/details/92576998
es
今日推荐