предисловие
ранее представленныйИзучение 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
В блоге иностранца есть решение этой проблемы.
- Откройте реестр и введите
regedit
- найти
Parameters
ключ - изменить внутреннюю часть
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.