моя система Ubuntu застревает при запуске сервиса эластичного поиска - PullRequest
0 голосов
/ 26 мая 2019

У меня есть система Ubuntu 18.04 с оперативной памятью 4 ГБ и жестким диском 500 ГБ. Я установил в моей системе упругий поиск, например "sudo apt-get installasticsearch"

но при запуске упругого поиска с помощью команды: sudo serviceasticsearch start

Моя система зависла, я ничего не могу сделать. как это исправить

1 Ответ

1 голос
/ 27 мая 2019

Возможно, я смогу ответить на этот вопрос, так как я столкнулся с этой проблемой некоторое время назад, а также решил ее после того, как какое-то приложение R & D.Mor ROR работает в режиме реального времени и имеет более 8000+ изображений и интенсивную загрузку ЦП, поскольку в моем приложении происходит гораздо большесервер, так как каждый запрос использует LAT / LNG для обслуживания гео-вычисленного ответа. Я столкнулся с этой проблемой нехватки памяти, так же, как и у вас, когда я начал и переиндексировал свои данные наasticsearch.

Мои уроки-

  1. ElasticSearch - это монстр, который съест вашего барана.
  2. Не имеет значения, насколько оптимизированы ваши ключевые слова ИЛИ данные, которые вы нажимаете наasticSearch для индексации,у вас должен быть буфер по умолчанию для резервной памяти.

Что я сделал ... это решило мою проблему ...

  1. Добавьте пространство подкачки , которое действует как резервная память на случай, если ваша оперативная память будет израсходована.
  2. Я также обновил до 8 ГБ HD, чтобы быть на более безопасной стороне.

Теперь, так какя следовал завышеупомянутые шаги, я не сталкиваюсь с какой-либо низкой ошибкой памяти, несмотря на то, что размер моих данных indexex становится огромным каждый месяц. Более того, я по-прежнему хорош, чтобы избежать ошибок и проблем с памятью при индексации этих огромных данных.

Еще одна вещь, которую я недавно сделал для улучшения потребления памяти моего приложения на Rails внедряет jmalloc в мой ruby ​​2.4.1. Вы можете прочитать больше здесь , но простыми словами, это помогает улучшитьпотребление памяти приложениями ruby. Скопированное объяснение Jmalloc будет выглядеть так:

Ruby традиционно использует функцию языка C malloc для динамического выделения, освобождения и перераспределения памяти при хранении объектов.Jemalloc - это реализация malloc (3), разработанная Джейсоном Эвансом (отсюда и инициалы je в начале malloc), которая, по-видимому, более эффективна при распределении памяти по сравнению с другими распределителями из-за ее сосредоточенности на предотвращении фрагментации и масштабируемой поддержке параллелизма.

Ниже приведены шаги, которые я предпринял, чтобы добавить Jmalloc в свой существующий Ruby 2.4.1, переустановив 2.4.1 на моем производственном сервере (после тестирования на staging / dev) с помощью rvm.

 ===========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 

Результаты внедрения jmalloc в ruby ​​были просто выдающимися даже после тестирования 2000 случайных запросов, моя общая память приложения составляла всего 364 МБ и оставалась неизменной при тестировании с использованием нижеприведенных гемов тестирования.

gem "memory_profiler"
gem "derailed_benchmarks"

надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...