Esper 8.2 развернуть производительность - PullRequest
0 голосов
/ 11 февраля 2020

Я создаю прототип Esper для решения сопоставления событий, в котором я создаю запросы динамически. В целом я доволен производительностью самого соответствующего двигателя. Однако при развертывании новых запросов возникает любопытная проблема. В начале дня вызов DeploymentServer.deploy () занимает <100 мс. По прошествии дня все больше событий загружаются в механизм, вызов deploy () растет все медленнее и медленнее, достигая 1,5 секунды в конце дня, когда процесс увеличивается до ~ 40G в виртуальной памяти. Даже если нет ожидающих событий и никакой другой обработки в конце дня, вызов deploy () будет медленным. На коробке также есть еще один большой процесс, но в системе достаточно свободной памяти. </p>

Я пытался развернуть / отменить развертывание одного и того же оператора в течение дня, и время развертывания () увеличится, даже если в системе нет других операторов.

Приветствия,

Роберт

Любые идеи, почему это произойдет и можно ли этого избежать?

Роберт

1 Ответ

0 голосов
/ 13 февраля 2020

Ответ заключается в том, что в зависимости от запросов некоторые вещи вычисляются как время развертывания. Т.е. когда есть именованное окно или таблица, заполненная событиями, и что запросы ссылаются на это именованное окно или таблицу. Например, create index создаст индекс. Любые объединения и подзапросы также могут создавать индексы. При наличии агрегатов в именованном windows их также необходимо вычислять при развертывании запроса к именованному окну. Таким образом, если у вас уже есть миллионы событий, этап развертывания может занять некоторое время. Если вы можете предоставить конкретный запрос c, я могу предоставить больше информации.

...