Даже после установки request_cache=true я не вижу прироста производительности при выполнении дорогостоящих запросов ES.

В продолжение моих комментариев к этому ответу SO у меня есть следующая настройка:

Использование тяжелого чтения ES-индекса, который также получает индексные запросы, но соотношение составляет 25: 1, и использование refresh_interval, равное 1 секунде, и попытка улучшить производительность запроса, явно установив этот параметр, чтобы он также кэшировал поисковый запрос hits, но не видел никакой производительности. прирост.

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

Подтвердите, верно ли мое предположение, и есть ли способ повысить производительность с помощью различных настроек кэша, доступных в ES?

Примечание. Я использовал раздел кэша мониторинга, упомянутый в https://opensourceconnections.com/blog/2017/07/10/caching_in_elasticsearch/ и ниже — O/P, который я получил.

URL:- http://:9200/_cat/nodes?v&h=queryCacheMemory,queryCacheEvictions,requestCacheMemory,requestCacheHitCount,requestCacheMissCount,flushTotal,flushTotalTime

queryCacheMemory queryCacheEvictions flushTotal flushTotalTime 
              0b                   0     353204           1.9h 
              0b                   0          0             0s 
              0b                   0     464814           2.2h 
              0b                   0     292127           1.6h 
              0b                   0     409013           2.1h 
              0b                   0     394303             2h 
              0b                   0     369545           2.1h 
              0b                   0          0             0s 
              0b                   0          0             0s

Обратите внимание, что даже после подсчета requestCacheMemory, hit и miss он не включается в O/P


person Community    schedule 10.09.2020    source источник


Ответы (2)


Параметр строки запроса request_cache=true полезен только в том случае, если кеш запроса отключен на уровне индекса, но, поскольку он включен по умолчанию, указание этого параметра не имеет никакого эффекта, если вы явно не отключили кеш на уровне индекса.

Кроме того, вы уверены, что всегда отправляете один и тот же запрос JSON? Причина, по которой я спрашиваю, заключается в том, что кэш-ключ создается из запроса JSON, поэтому даже если в запросе изменится один символ, ключ не будет прежним.

Наконец, вы можете проверить, как кеш запросов попал или пропал, проверив эту конечную точку.

GET your-index/_stats/request_cache?human

Что увеличивается? hit_count или miss_count?

person Val    schedule 10.09.2020
comment
Я использую это в старой версии, и он не возвращает никакого значения в request_cache :( - person ; 14.09.2020
comment
Какую версию ты используешь? - person Val; 14.09.2020
comment
1.4 :( и документ, о котором вы упомянули, недоступен для версии 1.4, а также не возвращает память и количество вытеснений при проверке нескольких параметров кеша, упомянутых в opensourceconnections.com/blog/2017/07/10/ - person ; 14.09.2020
comment
Я использую конечную точку _cat/nodes?v&h=id,queryCacheMemory,queryCacheEvictions,requestCacheMemory,requestCacheHitCount,requestCacheMissCount,flushTotal,flushTotalTime, и ниже показано, как выглядит ответ - person ; 14.09.2020
comment
Неразборчиво в комментариях... вместо этого вы должны обновить свой вопрос с этой информацией - person Val; 14.09.2020
comment
Но если вы действительно беспокоитесь о производительности, то первое, что вы должны сделать, это обновиться до более поздних версий. 1.4 больше не поддерживается! - person Val; 14.09.2020
comment
Я знаю, но это не в моих руках, все, что я могу сделать, я также хочу знать, есть ли в этой версии опция кэширования. - person ; 14.09.2020
comment
Давайте продолжим это обсуждение в чате. - person ; 14.09.2020
comment
отредактировал вопрос с необходимой информацией, пожалуйста, посмотрите и дайте мне знать, если мне нужно предоставить дополнительную информацию - person ; 15.09.2020
comment
Вот доступные столбцы для _cat/nodes API в версии 1.4: elastic.co/guide/en/elasticsearch/reference/1.4/, я не вижу queryCacheMemory и queryCacheEvictions - person Val; 15.09.2020
comment
не подавать в суд, это может быть причиной того, что он становится равным 0, в любом случае, я хочу сказать, есть ли что-нибудь, что мы можем настроить для кэширования в этой действительно старой версии ES? - person ; 15.09.2020

Кроме того, почему вы сохраняете интервал обновления в 1 с? Попробуйте 30-60 с, что снизит нагрузку, а также не создаст столько сегментов для слияния - недавно я рассматривал слияние и думаю, что это сделает некоторые типы кэширования недействительными, хотя, возможно, не общий кеш запросов.

person Steve Mushero    schedule 11.09.2020
comment
Мне также нужны обновления поиска и индекса почти в реальном времени, поэтому я не могу увеличить значение интервала обновления. - person ; 14.09.2020