Изучение ElasticSearch — эталонный тест (5)

Elasticsearch
Изучение ElasticSearch — эталонный тест (5)

предисловие

ранее представленныйИзучение ES-объектов и вложенных объектов (3)а такжеИзучение ES-вложенных объектов и родительско-дочерних объектов (4), сегодня я хочу снять макросElasticSearchКаково выступление?

мы можем использовать基准测试иди прямоElasticSearchработоспособность проверяется.

Ориентиры

Подготовка окружающей среды

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

  • Машина: Windows 10 6 ядер 16 ГБ ОЗУ
  • Параметры запуска ElasticSearch: JVM 1GB
  • файл сопоставления:
{
  "mapping": {
    "doc": {
      "properties": {
        "message": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "postDate": {
          "type": "date"
        },
        "user": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
  }
}

Затем мы запускаемElasticSearch,Kibanaа такжеJmeter. вKibanaиспользовал кElasticSearchмониторинг производительности,JmeterотправлятьIndexзапрос, продолжайте отправлятьHttpпросить.

Настроить Jmeter

СоздаватьHttp Requestкомпоненты и настроитьElasticSearchнужныйIPи порт.

Обратите внимание, что в настоящее время запрос не может быть отправлен в обычном режиме, и будет отображаться подсказка.text/plainизheadНеправильно.

Решение этой проблемы заключается в созданииHTTP Header Manager. существуетHTTP Header Managerуказанный вышеContent-Typeдаapplication/json.

Хотя вKibanaуже есть дляElasticSearchмониторинг, но мы все еще можемJmeterнастроить мониторингTPSсоответствующий компонент. конфигурацияSummary Reportа такжеView Results Tree.

при запускеJmeter, обнаружил, что его можно отправить нормальноIndexпросить,ElasticSearchНовый документ также создается нормально.

Столкнуться с проблемами

При первоначальной попытке использовать 100 нитей для проверки давленияElasticSearch.

найти вSummary ReportОтображается следующее сообщение об ошибке.

java.net.BindException: Address already in use: connect

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

В отрасли циркулирует такое предложение

你现在遇到的问题,早在八百年前就有人遇到了。

Итак, начнемGoogleПоиск выше. Нашелapache-multiple-requests-with-jmeterтакая статьяStackOverflowпост, я должен вздохнуть здесьStackOverflowмощная способность осаждения знаний.

потомstackoverflowВ блоге иностранца есть решение этой проблемы.

  1. Откройте реестр и введитеregedit
  2. найтиParametersключ
  3. изменить внутреннюю частьMaxUserPortСтоимость недвижимости 66534

После этой модификации вWindowsВышеупомянутое можно использовать временноJmeterПроверено давлением.

Хотя позже я обнаружил, что если я продолжу увеличивать количество потоков, эта проблема все равно будет возникать время от времени. существуетStackOverflowВышеизложенное также предполагает, что я все еще надеюсь сказатьJmeterразвернут наLinuxна машине для стресс-тестирования других приложений.

100 потоков

Что ж, после решения вышеописанной проблемы приступаем к стресс-тесту первого сценария.

допустимыйKibanaсерединаIndexСм. в модуле мониторинга индекса,Index RateНаверное, около 300. В настоящее время насчитывается 400 тысяч документов. Всего хранится 21,6 МБ.

наблюдениеElasticSearchстатус узла.

ОбнаружитьCPUбыстро растет. В настоящее время JVM все еще находится в относительно стабильном состоянии.

Segment CountХотя он колеблется вверх и вниз, об этом можно догадаться, потому что данные постоянно вводятся вES, есть новыеSegmentЗначение создается, ноSegmentколичество, после достижения определенного порога,ESбудет автоматическиSegmentобъединить. так,SegmentЧисло будет увеличиваться и уменьшаться.

LatencyВ целом все еще возвращается в течение нескольких миллисекунд, указывая на то, что при этой сумме и запросеESизLantencyВсе еще относительно стабильно. Не достигнутоESв диапазоне давления.

500 потоков

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

Видно, что по сравнению с исходными 200 потоками загрузка ЦП снова увеличилась при 500 потоках.Однако, учитывая, что Jmeter и ElasticSearch запущены на одной машине, весьма вероятно, что рост ЦП, вызванный Jmeter, очень вероятен.В следующий раз вам нужно запретить Jmeter на другой машине, чтобы проверить производительность ElasticSearch.Это может быть лучше, но тест здесь не должен быть большой проблемой, ведь коэффициент использования процессора составляет всего 40%, и он далеко не достигает узкого места процессора.

можно увидетьJVMиспользование продолжает растиIndexНовые документы, присутствие памяти продолжает расти.

Index Memory-LuceneПроисходит постоянное увеличение общей памяти, ноDoc Valuesпрактически не изменился, вероятно, из-за

существуетIndex Memory-Luceneможно посмотреть в инструкцииIndex Memory-LuceneзанятJVMчасть памяти.

ТакIndex Memroy-LuceneВ чем причина повышения? можно на втором фотоLucene Totalа такжеTermКривые в основном сохраняются на постоянном расстоянии друг от друга. можно считать из-заTermвызвано подъемом.

взамен索引интерфейс мониторинга. можно увидетьRequest RateЗначительно увеличена с исходных 300 т/с до 600 т/с.

1000 потоков

Есть две проблемы под 1000 потоков,JmeterНачал много следующей ошибки снова. Повторная настройка поля реестра не дает никакого эффекта, предполагается, чтоJmeterпомещен вLinuxОкружающая среда может полностью решить эту проблему.

java.net.BindException: Address already in use: connect

Другое дело, чтоJmeterВоздействие на ЦП машины может быть уменьшено до определенной степени. В противном случае результат теста может быть неточным.

Однако в настоящее время tps около 620, по-видимому, является пределом, когда вышеуказанные факторы воздействия не устранены.

о написании

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

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

Если ничего из вышеперечисленного, то напишите, что вам больше всего хочется сказать после прочтения? Эффективная обратная связь и ваша поддержка — это то, что помогает мне больше всего.

Кроме того, я планирую снова поднять блог. Добро пожаловать в гостиесть арбуз.

меня зовут шейн. Сегодня 31 августа 2019 года. День 38 100-дневной писательской программы, 38/100.