我的Ubuntu系统在启动弹性搜索服务时被卡住了



我有一个带有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上时,我也像您一样面临着这个低内存问题。

我的学习 -

  1. Elasticsearch是一个会吞噬您的公羊的怪物。
  2. 无论您的关键字是多么优化或数据,您都将其推向Elasticsearch进行索引,您都必须保留备份内存的默认缓冲区。

我做了什么...这解决了我的问题...

  1. 添加一个交换空间,该空间像备用内存一样,以防您的公羊被吃掉。
  2. 我还升级到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使用的内存非常高。因此,您可以告诉弹性搜索,只能使用特定数量的内存。

  1. 首先转到/etc/elasticsearch/
  2. 只需查看目录结构,您将获得一个名为 jvm.options
  3. 的文件
  4. 只需通过在JVM中添加2行代码来分配内存: -Xms1g -Xmx1g
  5. 只需重新启动您的Elasticsearch并享受它:(

最新更新