Добрый день,
Просьба посоветовать. Сейчас под один проект планирую прикупить
выделенный сервер, для ElasticSearch. Общий размер индексов - 25 Гбайт,
около 42 млн. записей, количество которых растет очень малыми темпами.
То есть почти фиксированная база данных. Проект делится на две части.
1. Сборка и пересборка данных. Происходит раз в неделю, перелапачивает
всю базу чтобы в итоге сформировать наборы данных, отдаваемые юзерам.
2. Собственно, основная приоритетная задача - быстро отдать юзерам.
Вопрос 1 - как лучше организовать систему с такими характерстиками? На примете - три сервера:
Сервер 1 - 8 core CPU, 96 Gb RAM, 2x2Tb HDD
Сервер 2 - 8 core CPU, 96 Gb RAM, 2x600Gb SAS
Сервер 3 - 8 core CPU, 32 Gb RAM, 2x300Gb SSD
Насколько я понимаю, сам ES оптимально работает только при веделении ему
памяти до 32 Гбайт. Исходя из этого, у меня в голове рисуются следующие
комбинации настроек, чтобы получить практически полную работу
in-memory.
1. 16 Gb под ES HEAP, 16 Gb - система, 64 Gb - временный диск в RAM для /tmp данных (сервер 1 или 2)
2. 64 Gb под ES HEAP (сервер 1 или 2)
3. 16 Gb под ES HEAP, и уповать на скорость SSD (сервер 3)
Или есть еще какие варианты? И насколько необходим SAS для такой нагрузки?
Вопрос 2 - раз в неделю осуществляется пересборка данных с помощью
разных скриптов, которая занимает 2,5 часа и затрагивает до 30% объема
записей. Все построено на bulk, mget, scroll, то есть на пакетных
операциях. Опять же в порядке бреда в голове есть две мысли, как сделать
оптимально:
1. На тестовом сервере осуществлять пересборку данных и потом уже просто
потоком перелить все готовые записи с тестового сервера на production,
не дергая большое число справочников, из которых состоит целевая запись.
Плюсы: а) полная копия боевых данных на тестовом сервере, б) отсутствие
лавинной непредсказуемой нагрузки на production сервере, в) не
выбивание данных из кеша на период пересборки данных
2. Не париться, и делать пересборку данных на той же машине, не
производя потом полной синхронизации. Плюсы: а) значительно упрощается
инфраструктура ПО.
Все аргументы какие-то убогие получились, но это от незнания. Нужны просто best paractics. :)
Заранее спасибо!