Performance 使用elasticsearch优化服务器操作:寻址低磁盘水印
编辑-根据@opster elasticsearch ninja的评论,我对原始问题进行了编辑,以使其关注ES的低磁盘水印错误 有关小型计算机上更一般的服务器优化,请参阅: 对于原始问题的原始跟进以及与调试ES故障相关的注意事项,还应:Performance 使用elasticsearch优化服务器操作:寻址低磁盘水印,performance,
elasticsearch,server,configuration,fail2ban,Performance,
elasticsearch,Server,Configuration,Fail2ban,编辑-根据@opster elasticsearch ninja的评论,我对原始问题进行了编辑,以使其关注ES的低磁盘水印错误 有关小型计算机上更一般的服务器优化,请参阅: 对于原始问题的原始跟进以及与调试ES故障相关的注意事项,还应: 问题:我注意到elasticsearch经常失败,需要手动重新启动服务器 这个问题可能涉及: 我想更好地了解如果磁盘大小出现故障,elasticsearch将做些什么,如何优化配置,以及只有在系统出现故障后才能最终自动重启 您能否帮助理解如何阅读elast
问题:我注意到elasticsearch经常失败,需要手动重新启动服务器 这个问题可能涉及: 我想更好地了解如果磁盘大小出现故障,elasticsearch将做些什么,如何优化配置,以及只有在系统出现故障后才能最终自动重启 您能否帮助理解如何阅读elasticsearch日志并选择相应的解决问题,建议在小型服务器机器上优化服务器操作的最佳实践 我的首要任务是不让系统崩溃;性能稍微降低一点是可以的,没有增加服务器大小的预算 硬件 我在一台小型服务器(2GB)上运行elasticsearch,有3个索引(500mb、20mb和65mb存储大小)和几GB磁盘可用空间(固态):我希望允许使用虚拟内存而不是消耗RAM 下面是我所做的:
杂志怎么说?
journalctl | grep elasticsearch
>探索与ES相关的故障
May 13 05:44:15 ubuntu systemd[1]: elasticsearch.service: Main process exited, code=killed, status=9/KILL
May 13 05:44:15 ubuntu systemd[1]: elasticsearch.service: Unit entered failed state.
May 13 05:44:15 ubuntu systemd[1]: elasticsearch.service: Failed with result 'signal'.
在这里我可以看到埃斯被杀了
已编辑:我发现由于java内存不足错误,请参见以下服务弹性搜索状态中的错误;读者也会发现运行以下命令很有用:
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
检查当前内存分配
ES日志上写了什么?
检查:
/var/log/elasticsearch
[2020-05-09T14:17:48,766][WARN ][o.e.c.r.a.DiskThresholdMonitor] [my_clustername-master] high disk watermark [90%] exceeded on [Ynm6YG-MQyevaDqT2n9OeA][awesome3-master][/var/lib/elasticsearch/nodes/0] free: 1.7gb[7.6%], shards will be relocated away from this node
[2020-05-09T14:17:48,766][INFO ][o.e.c.r.a.DiskThresholdMonitor] [my_clustername-master] rerouting shards: [high disk watermark exceeded on one or more nodes]
如果我只有一台服务器和一个实例在工作,“碎片将从这个节点移开”是什么意思
service elasticsearch status
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-05-09 13:47:02 UTC; 32min ago
Docs: http://www.elastic.co
Process: 22691 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCES
Main PID: 22694 (java)
CGroup: /system.slice/elasticsearch.service
└─22694 /usr/bin/java -Xms512m -Xmx512m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+U
我的配置说明了什么?
我使用的默认配置是“/etc/elasticsearch/elasticsearch.yml”
并且没有为水印配置任何选项,如
我应该包括它们吗?他们会怎么做
请注意,我有未注释的#bootstrap.memory\u lock:true
因为我只有2gb的内存
即使elasticsearch在内存交换时表现不佳,我的首要任务是它不会失败,并且站点保持正常运行
在单节点计算机上运行-如何处理未分配的副本?
我知道不能在相同的节点上分配副本。
因此,在单个节点上拥有副本有意义吗?
如果一个主索引失败,复制副本将被拯救,还是将被闲置
我不知道是否应该删除它们并留出空间,或者最好不要删除。对您的问题的解释:
“如果我只有一台服务器和一个实例工作,碎片将从该节点移开?”
Elasticsearch在决定之前会考虑可用磁盘空间
是分配新碎片、重新定位碎片还是将所有碎片放在一边
基于此错误的不同阈值的读取模式索引,
原因是弹性搜索索引由不同的碎片组成
数据节点上的持久化和磁盘空间不足可能导致上述问题
问题
在您的情况下,由于您只有一个数据节点,因此同一数据节点上的所有索引都将进入读取模式,即使您释放了
空格直到您显式地点击
opster指南中提到的API
编辑:在单个节点上,最好禁用副本,因为Elasticsearch不会将碎片的副本分配给同一数据节点。。因此,在单个节点Elasticsearch群集上拥有副本是没有意义的,这样做将不必要地将索引和群集运行状况标记为黄色(缺少副本).您共享的日志与elasticsearch
服务无关,它是一个sshd
服务日志。高磁盘水印是一个elasticsearch
配置,默认值为90%
,这意味着如果elasticsearch保存数据的磁盘使用率超过90%
it将停止索引任何内容,您的日志显示您只有7.6%
free(超过90%在使用中),哪里有几GB的可用空间?它在另一个磁盘中?如果是这样,您可以将数据目录移动到此磁盘。感谢您澄清我认为日志与ES相关的错误。我发现有大量来自消耗磁盘空间的应用程序的日志。从您的评论和下面的回答中,我了解到除了使用整理磁盘空间,以解决低磁盘水印问题。这样说是否正确?出于崩溃的严重风险,您建议自动重新启动ES的最佳做法是什么?关于身份验证错误,您建议如何使用日志进行检查-由于连续登录尝试,是否仍存在安全风险或性能风险?tha感谢您澄清单个节点会发生什么,并感谢您在ES上提供有用的服务建议config@user305883,谢谢你的好意:),如果你能投票并接受答案那就太好了:)不幸的是,问题仍然存在-我释放了磁盘空间,今天发现ES失败。并且无法自动自动重启。我注意到日志中有一个ShardNotFoundException
,即使重启了服务,curl'localhost:9200/\u cat/shards?v'
显示未分配的索引。我不知道这是否是ES崩溃的问题。请告诉我是否应该修改这个问题,使其更一般,例如现在它与低磁盘水印无关,但我看到它更多地与如何调试ES有关,可能还与调优小型服务器有关