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, 成功了!

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

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你将 Elasticsearch 构建为服务并遇到错误时,这通常意味着在部署、配置或运行过程中遇到了一些问题。Elasticsearch 的服务部署可能涉及到以下几个方面: 1. **配置错误**:可能是配置文件(如 `elasticsearch.yml`)中的参数设置不正确,比如网络端口、集群名称、索引设置等。 2. **资源限制**:服务器的内存、CPU 或磁盘空间不足可能导致服务无法启动或性能受限。 3. **依赖问题**:服务可能依赖于其他服务(如日志管理、数据源同步),如果这些服务没有正确配置或运行,Elasticsearch 也可能出错。 4. **版本兼容性**:如果你使用的是新版本的 Elasticsearch,可能与旧版的客户端、插件或操作系统存在不兼容。 5. **网络问题**:如果服务依赖于网络,如跨主机通信,网络问题可能导致连接失败。 6. **安装和初始化问题**:安装过程中可能出现了错误,比如命令执行不正确,文件权限问题等。 7. **日志错误**:检查 Elasticsearch 的错误日志是诊断问题的关键,日志中通常会详细记录异常信息。 当你遇到具体错误时,可以尝试以下步骤: - **查看错误日志**:检查 `logs` 目录下的 `elasticsearch.log` 或 `堆栈跟踪`。 - **排查配置**:确认所有设置是否符合预期,尤其是关于网络、集群和节点设置的部分。 - **检查依赖**:确保所有依赖服务正常运行,比如 Java 运行环境、Kibana 等。 - **更新文档**:查阅 Elasticsearch 文档,看看是否有最新的解决方案或升级指南。 - **搜索社区**:在 Elasticsearch 官方论坛、Stack Overflow 或 CSDN 上搜索错误信息,可能已经有其他人遇到过并找到了解决办法。 如果你能提供具体的错误信息,我可以更准确地帮助你分析问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值