#performance #insert #document #marklogic
#Производительность #вставить #документ #marklogic
Вопрос:
У меня есть требование вставить 10 000 документов в marklogic менее чем за 10 секунд.
Я тестировал на одном одноузловом сервере marklogic следующим образом:
- используйте
xdmp:spawn
для передачи задачи вставки документа на сервер задач; - использовать
xdmp:document-insert
без явного указания леса; - сервер задач имеет 8 интерфейсов для обработки задач;
- Мы включили
CPF
.
Производительность очень плохая: для завершения создания 10 000 документов потребовалось 2 минуты. Я уверен, что производительность будет лучше, если я протестирую ее в кластерной среде, но я не уверен, что она может завершиться менее чем за 10 секунд.
Пожалуйста, посоветуйте способ повышения производительности.
Комментарии:
1. Если вы выполняете только вставки, то ввод-вывод дисковой подсистемы, скорее всего, будет вашим ограничивающим фактором. Если панель мониторинга ML (в разделе «Скорости и нагрузки») показывает высокую нагрузку, то диск / ввод-вывод в вашей тестовой среде превышен, и вы мало что можете сделать, кроме как сделать вашу тестовую среду более похожей на вашу производственную среду. Кроме того, ML рекомендует настроить 6 лесов. Это также может оказать некоторое влияние на производительность вставки.
2. Можете ли вы подробнее рассказать о данных, которые вы пытаетесь обработать, и о процессе приема? Почему вы использовали spawn в первую очередь, и почему вы включили CPF? Обратите внимание, что включение CPF активирует триггеры, что также замедляет вставки..
Ответ №1:
Я бы начал со сбора дополнительной информации. Что это за версия MarkLogic? На какой ОС она запущена? Какой процессор? Оперативная память? Что такое подсистема хранения? Сколько лесов подключено к базе данных?
Затем соберите показатели уровня операционной системы, чтобы увидеть, является ли одна из подсистем очевидным узким местом. Пока я не буду рассуждать дальше этого.
Комментарии:
1. Это виртуальная среда: 1. Marklogic 6 2. Linux 2.6.18-348.18.1.el5 3. процессор: 2 процессора, название модели: Intel (R) Xeon (R) CPU X5650 4. Оперативная память: 4G 5. хранилище: локальный диск 6. лес: 1 7. Показатели ОС: вы имеете в виду проверку ввода-вывода ОС при запуске теста? например, iostat
2. Отслеживайте активность всех подсистем под нагрузкой: CPU, RAM, disk, network. Для процессора и диска
iostat -mxz 5
это хорошее место для начала. Удалитеz
, если ваш iostat его не поддерживает.
Ответ №2:
Если вам нужна быстрая загрузка, я бы не стал использовать xdmp: spawn для каждого отдельного документа и не использовал CPF. Но 2 минуты для документов 10k не обязательно звучат медленно. С другой стороны, я достиг скорости до 3 Кб / с, но без индексов диапазона, преобразований, чего бы то ни было. И очень быстрый диск (например, ssd)..
HTH!
Комментарии:
1. 1. Мне нужно, чтобы это закончилось через 10 секунд. 2. У меня нет SSD.
Ответ №3:
Предполагается, что сервер с 2 сокетами, 128 ГБ-256 ГБ оперативной памяти, быстрый ввод-вывод (поддерживается 400-800 МБ / с)
- Соответствующее количество лесов (12 первичных или 6 первичных / 6 вторичных)
- Более 8 потоков при условии достаточного количества ядер
- CPF выключен
Включите историю выполнения, посмотрите в метриках, и вы увидите, где находится узкое место.
SSD не требуется — просто пропускная способность ввода-вывода … которую обеспечивают несколько вращающихся дисков без проблем.
Комментарии:
1. Я тестировал на виртуальной машине # 1 Оперативная память: 4G # 2 процессор: 2 процессора, название модели которых «Intel (R) Xeon (R) CPU X5650» ark.intel.com/products/47922 /… # 3 Ввод-вывод: как проверить возможность ввода-вывода? Я могу получить ввод-вывод с помощью команды iostat, кажется, что он записывает со скоростью 2 МБ / с. # 4 Номер леса: только 1. Кажется, у меня только два процессора, и у меня только один лес. # 5 CPF: я не буду использовать сервер задач, чтобы CPF не повлиял на вставку документа.