我有一个带有4 GB RAM和500GB硬盘的Ubuntu 18.04系统。我已经在我的系统中安装了弹性搜索,例如" sudo apt-get install install install install install install install install install install install install install install install install install install slasticsearch"
但是,在使用命令开始弹性搜索时:sudo服务elasticsearch start
我的系统被卡住了,我无法做任何事情。如何修复此
也许我可以回答这个问题,因为我前一段时间遇到了这个问题,并且在某些R& d.my ror应用程序是实时的,并且具有8000多个图像,并且CPU密集型,因为我的服务器中发生了很多事情,因为每个请求都使用lat/lng提供地理估计的响应。当我启动并将我的数据重新索引在Elasticsearch上时,我也像您一样面临着这个低内存问题。
。我的学习 -
- Elasticsearch是一个会吞噬您的公羊的怪物。
- 无论您的关键字是多么优化或数据,您都将其推向Elasticsearch进行索引,您都必须保留备份内存的默认缓冲区。
我做了什么...这解决了我的问题...
- 添加一个交换空间,该空间像备用内存一样,以防您的公羊被吃掉。
- 我还升级到8GB HD以更安全。
现在,由于我遵循上述步骤,尽管我的索引数据的大小都变得巨大,但我并没有遇到任何低记忆错误。Furthermore我仍然很好地出现错误和与内存相关的问题,同时索引这一巨大的问题数据。
另外一件事,我最近为改善我的Rails应用程序的记忆消耗而做的一件事是在我的Ruby中注入Jmalloc 2.4.1.您可以在这里阅读更多,但简单地说,它有助于改善内存的记忆Ruby App的消费。 Ruby传统上使用C语言函数malloc在存储对象时动态分配,释放和重新分配内存。Jemalloc是由Jason Evans开发的Malloc(3(实施(因此,Malloc开始时的" JE"缩写(,与其他分配者相比,它在分配内存方面似乎更有效,因为它的重点是避免分裂和可扩展的一致性支持。 以下是我通过在生产服务器上重新安装2.4.1的2.4.1(在登台/dev上进行测试之后(中采取的步骤。
===========CHECK RVM --
rvm info
============ check ruby version
ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
========== if ruby is installed, reinstall with Jemalloc and compile
=============REINSTALL RUBY WITH JAMALLOC
rvm reinstall 2.4.1 -C --with-jemalloc --disable-binary
============VERIFY JMALLOC IN THE BELOW LIST of ruby compiling list
ruby -r rbconfig -e "puts RbConfig::CONFIG['LIBS']"
-lpthread -ljemalloc -lgmp -ldl -lcrypt -lm
即使在使用2000个随机请求进行测试后,JMALLOC被注入Ruby的结果也很出色,我的整个应用程序存储器仅为364MB,并且通过使用以下提到的测试GEM进行测试。
。gem "memory_profiler"
gem "derailed_benchmarks"
希望它有帮助
CPU和(RAM(Elasticsearch使用的内存非常高。因此,您可以告诉弹性搜索,只能使用特定数量的内存。
- 首先转到/etc/elasticsearch/
- 只需查看目录结构,您将获得一个名为 jvm.options 的文件
- 只需通过在JVM中添加2行代码来分配内存:
-Xms1g -Xmx1g
- 只需重新启动您的Elasticsearch并享受它:(