Elasticsearch 日志文件巨大的性能下降
Elasticsearch log file huge size performance degradation
我正在使用 RoR 开发一个应用程序和一个名为 searchkick 的 gem,这个 gem 内部使用 elasticsearch。一切正常,但在制作过程中,我们遇到了一个奇怪的问题,即一段时间后网站出现故障。我们发现的原因是服务器上的内存被过度使用。我们删除了上周的一些 elasticsearch 日志文件,发现内存使用率从 92% 降低到 47%。我们使用滚动日志记录,并且每天都会备份日志。现在,我们面临的问题是,前一天只有 1 个日志文件,内存越来越高。日志文件占用了很多space,即使是现在的也要4GB!!!!我怎样才能防止这种情况发生?
消息几乎是警告级别。
[00:14:11,744][WARN ][cluster.action.shard ] [Abdul Alhazred] [?][0] sending failed shard for [?][0], node[V52W2IH5R3SwhZ0mTFjodg], [P], s[INITIALIZING], indexUUID [4fhSWoV8RbGLj5jo8PVoxQ], reason [Failed to start shard, message [IndexShardGatewayRecoveryException[[?][0] failed recovery]; nested: EngineCreationFailureException[[?][0] failed to create engine]; nested: LockReleaseFailedException[Cannot forcefully unlock a NativeFSLock which is held by another indexer component: /usr/lib64/elasticsearch-1.1.0/data/elasticsearch/nodes/0/indices/?/0/index/write.lock]; ]]
查看一些 SO questions,我正在尝试增加 ulimit 或创建一个新节点,以便问题也得到解决并减小大小。我的 limits.conf 有 65535 的硬文件和软文件。同样在 sysctl.conf fs.file-max 中超过 100000。我可以采取任何其他步骤来减小文件大小,而且我无法深入了解 elasticsearch 配置更改。
如果有人能帮忙。谢谢
我建议至少升级到 1.2.4,因为 Lucene 中报告了一些文件锁定问题:http://issues.apache.org/jira/browse/LUCENE-5612, http://issues.apache.org/jira/browse/LUCENE-5544。
是的,ElasticSearch 和 Lucene 都是资源密集型的。我执行了以下操作来纠正我的系统:
- 停止 ElasticSearch。如果你从像这样的命令开始
(bin/elasticsearch) 那么请指定这个来设置堆
开始。例如,我使用 16GB 的盒子,所以我的命令是
一个。 bin/elasticsearch-Xmx8g-Xms8g
b。转到配置 (elasticsearch/config/elasticsearch.yml) 并确保
bootstrap.mlockall: 真
c。将 ulimits -Hn 和 ulimits -Sn 增加到 200000 以上
- 如果您作为服务启动,则执行以下操作
一个。 出口ES_HEAP_SIZE=10g
b。转到配置 (/etc/elasticsearch/elasticsearch.yml) 并确保
bootstrap.mlockall: 真
c。将 ulimits -Hn 和 ulimits -Sn 增加到 200000 以上
确保您输入的大小不超过堆的 50%,无论您是将其作为服务启动还是从命令行启动
我正在使用 RoR 开发一个应用程序和一个名为 searchkick 的 gem,这个 gem 内部使用 elasticsearch。一切正常,但在制作过程中,我们遇到了一个奇怪的问题,即一段时间后网站出现故障。我们发现的原因是服务器上的内存被过度使用。我们删除了上周的一些 elasticsearch 日志文件,发现内存使用率从 92% 降低到 47%。我们使用滚动日志记录,并且每天都会备份日志。现在,我们面临的问题是,前一天只有 1 个日志文件,内存越来越高。日志文件占用了很多space,即使是现在的也要4GB!!!!我怎样才能防止这种情况发生?
消息几乎是警告级别。
[00:14:11,744][WARN ][cluster.action.shard ] [Abdul Alhazred] [?][0] sending failed shard for [?][0], node[V52W2IH5R3SwhZ0mTFjodg], [P], s[INITIALIZING], indexUUID [4fhSWoV8RbGLj5jo8PVoxQ], reason [Failed to start shard, message [IndexShardGatewayRecoveryException[[?][0] failed recovery]; nested: EngineCreationFailureException[[?][0] failed to create engine]; nested: LockReleaseFailedException[Cannot forcefully unlock a NativeFSLock which is held by another indexer component: /usr/lib64/elasticsearch-1.1.0/data/elasticsearch/nodes/0/indices/?/0/index/write.lock]; ]]
查看一些 SO questions,我正在尝试增加 ulimit 或创建一个新节点,以便问题也得到解决并减小大小。我的 limits.conf 有 65535 的硬文件和软文件。同样在 sysctl.conf fs.file-max 中超过 100000。我可以采取任何其他步骤来减小文件大小,而且我无法深入了解 elasticsearch 配置更改。
如果有人能帮忙。谢谢
我建议至少升级到 1.2.4,因为 Lucene 中报告了一些文件锁定问题:http://issues.apache.org/jira/browse/LUCENE-5612, http://issues.apache.org/jira/browse/LUCENE-5544。
是的,ElasticSearch 和 Lucene 都是资源密集型的。我执行了以下操作来纠正我的系统:
- 停止 ElasticSearch。如果你从像这样的命令开始 (bin/elasticsearch) 那么请指定这个来设置堆 开始。例如,我使用 16GB 的盒子,所以我的命令是
一个。 bin/elasticsearch-Xmx8g-Xms8g
b。转到配置 (elasticsearch/config/elasticsearch.yml) 并确保
bootstrap.mlockall: 真
c。将 ulimits -Hn 和 ulimits -Sn 增加到 200000 以上
- 如果您作为服务启动,则执行以下操作
一个。 出口ES_HEAP_SIZE=10g
b。转到配置 (/etc/elasticsearch/elasticsearch.yml) 并确保
bootstrap.mlockall: 真
c。将 ulimits -Hn 和 ulimits -Sn 增加到 200000 以上
确保您输入的大小不超过堆的 50%,无论您是将其作为服务启动还是从命令行启动