Я храню объект размером 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/мин, что кажется подозрительным.