2015-08-10 3 views
1

У меня есть 2 индекса в Elastic search, один из которых работает по типу хранилища по умолчанию, другой работает в типе памяти. Я вставил 100 000 документов на каждый из этих двух индексов, индекс хранения по умолчанию на 1 секунду быстрее, чем индекс ram. почему это ?Являются ли индексы памяти ElasticSearch быстрыми?

и при поиске также индекс по умолчанию быстрый.

мой ES-сервер работает на SSD. может кто-нибудь объяснить мне, почему индекс памяти медленнее, чем одно хранилище на SSD?

ответ

1

Вам нужно будет следить за тем, что происходит с вашей JVM и системной памятью во время загрузки, чтобы действительно понять, что происходит.

Опция индекса memory может работать против диспетчера памяти ОС. Он также может увеличивать паузы в сборке мусора, заставляя JVM работать больше, чтобы освободить место.

Опция default (mmapfs на 64-разрядных системах Linux) позволяет OS более эффективно управлять страницами кэширования/замены памяти.

1 секунда - это много добавленной задержки для запроса с небольшим индексом. Если бы я опасался догадываться, я бы сказал, что ваш индекс memory не на 100% резидент в физической памяти, и поэтому ОС вынуждена сворачивать ненужные большие страницы из виртуального -> физического до завершения запроса.

Эта статья входит в более подробно (из контекста Solr, но лежащий в основе реализации Lucene та же): http://blog.thetaphi.de/2012/07/use-lucenes-mmapdirectory-on-64bit.html

Попробуйте натыкаясь память о вашей системе, или тестирование против меньшего числа докторов, чтобы увидеть если расхождение все еще существует.

+0

Привет, я бегу на Ubuntu 14.04 LTS, и у меня есть 16 концертов DDR3 Ram. Я тоже не работаю в фоновом режиме. Я не изменил размер кучи JVM по умолчанию для Elastic-Search, должен ли я?. потому что 100K очень маленьких документов не заполнит размер кучи ES по умолчанию, не так ли? –

+0

HI снова, статья u увязана очень хорошо. Я думаю, что получил ответ на мою проблему, спасибо! –

1

Лучшее, что нужно сделать, это полностью отключить своп в вашей системе. Вы можете попробовать:

#sudo swapoff -a 

или отредактировать/и т.д./Fstab

Вы также можете предотвратить JVM от быть обменены ОС. В elasticsearch.yml:

bootstrap.mlockall: true 
Смежные вопросы