Хранение больших объектов в Memcached

Я храню объект размером 7-10 МБ в Memcached и сразу после помещения объекта пытаюсь его получить. В этом случае я получаю промахи кеша. Есть идеи, почему? Это решение работает для объектов меньшего размера.

Справочная информация:

Я использую Memcached для хранения набора больших объектов размером примерно 7-10 МБ. По какой-то причине я не могу разбить этот объект на несколько ключей меньшего размера. Я хочу, чтобы кеш был избыточным и теплым, поэтому я использую немного сложную процедуру размещения кеша, как описано ниже:

keySet = makeRedundantKeys(key) // Appends a unique num to the key
putAsync(keys in keyset)
while(!timeout || countNonNullKeys > desiredQuorumOfKeys) {
    countNonNullKeys = getSyncKeys(key in keySet)
    sleep(backoffTime);
}

Я получаю много сбоев, когда getSyncKeys занимает около 700 мс, чтобы получить только один ключ. Любая идея, почему это может произойти? Это наблюдается только для крупных объектов. Меньшие объекты размером ‹1 МБ работают нормально и возвращают данные за ~2 мс pAvg. Это хорошие хосты m4.2xlarge EC2 с высокой производительностью сети. Кроме того, мой график сегментов повторной передачи TCP подскакивает до 1500/мин, что кажется подозрительным.


person user1271286    schedule 30.06.2018    source источник


Ответы (1)


По умолчанию memcached будет хранить только объекты размером до 1 МБ:

Многие люди просили, чтобы memcached мог хранить элементы размером более 1 МБ, хотя обычно рекомендуется этого не делать, теперь это поддерживается в командной строке.

вы можете использовать параметр -I, чтобы увеличить это значение .

В вашем случае вам нужно установить -I как 10m. Вы используете AWS, поэтому, если вы используете свой собственный сервер memcached, вы сможете сделать это самостоятельно, но если вы используете AWS Elasticache, вам нужно создать группу параметров, изменить max_item_size с от 1 МБ (1048576) до 10 МБ (10485760) и примените его к кластеру Elasticache, который требует перезагрузки.

person jaygooby    schedule 10.09.2018