В настоящее время мы пытаемся выполнить нагрузочное тестирование нашего приложения, которое требует много регистрации в нашем эластичном кластере. На большой нагрузке я начинаю видеть ошибку ниже от ES
Error: No Living connections
at sendReqWithConnection (D:\home\site\wwwroot\node_modules\elasticsearch\src\lib\transport.js:225:15)
at next (D:\home\site\wwwroot\node_modules\elasticsearch\src\lib\connection_pool.js:213:7)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
и до этого мы видим еще кучу ошибок
Error: Request Timeout after 30000ms
at D:\home\site\wwwroot\node_modules\elasticsearch\src\lib\transport.js:354:15
at Timeout.<anonymous> (D:\home\site\wwwroot\node_modules\elasticsearch\src\lib\transport.js:383:7)
at ontimeout (timers.js:482:11)
at tryOnTimeout (timers.js:317:5)
at Timer.listOnTimeout (timers.js:277:5)
и
Error: [es_rejected_execution_exception] rejected execution of org.elasticsearch.transport.TransportService$7@4d532edc on EsThreadPoolExecutor[bulk, queue capacity = 200, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@6c5897a1[Running, pool size = 1, active threads = 1, queued tasks = 200, completed tasks = 122300]]
at respond (D:\home\site\wwwroot\node_modules\elasticsearch\src\lib\transport.js:307:15)
at checkRespForFailure (D:\home\site\wwwroot\node_modules\elasticsearch\src\lib\transport.js:266:7)
at HttpConnector.<anonymous> (D:\home\site\wwwroot\node_modules\elasticsearch\src\lib\connectors\http.js:159:7)
at IncomingMessage.bound (D:\home\site\wwwroot\node_modules\elasticsearch\node_modules\lodash\dist\lodash.js:729:21)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
Это только из-за большой нагрузки? Мне интересно, как я могу исправить узкое место. В настоящее время у нас есть 3 узла данных и 3 главных узла, работающих на отдельных серверах Linux.
- Должен ли я ввести что-то вроде logstash? сколько серверов мне нужно?
- Должен ли я внести в очередь, чтобы отложить задачи ES на потом
РЕДАКТИРОВАТЬ: немного больше информации -
Мы выполняем одну вставку для каждого запроса (всего мы отправляем около 100 параллельных запросов до 2000)
Производительность процессора не очень высокая <10% </p>
Мы размещаем машины на лазурном. Все приложения (узлы и узлы) находятся в одном регионе