Производительность Memcached падает из-за небольшого размера значений, подлежащих кэшированию.

Я только начал использовать memcached. Мы используем java-клиент spymemcached через прокси-сервер Pajamas (все с настройками по умолчанию и выделенной памятью 1024 МБ). Настроить программу на доступ к memcached очень просто и понятно, но у меня есть одно замечание:

когда размер кэшируемого значения падает до определенной точки (в моем случае: около 1450 байт), производительность резко падает (с 4 мс до 200 мс на каждое извлечение).

Означает ли это, что значение, которое я хочу кэшировать, должно быть выше определенных размеров? Как бы я мог определить такие размеры? Заранее спасибо!

Дэйвид


person David Zhao    schedule 15.08.2012    source источник
comment
Откуда вы измеряете эти задержки?   -  person mikewied    schedule 15.08.2012


Ответы (2)


Может ли быть проблемой алгоритм Нэгла (TCP, задерживающий отправку небольших пакетов на некоторое время)?

person Seun Osewa    schedule 17.08.2012

Хотя я мало что знаю о внутреннем устройстве memcached, мне кажется, что это связано с управлением распределением памяти. Memcached поддерживает пулы памяти с разными размерами фрагментов. http://www.mikeperham.com/2009/06/22/slabs-pages-chunks-and-memcached/ . Таким образом, в основном вы сталкиваетесь с внутренней фрагментацией, и memcached должен просматривать два фрагмента для поиска ваших данных.

person Arvind    schedule 15.08.2012
comment
Я понимаю это, но если это так, производительность должна падать, а не улучшаться, когда размеры кэшированных значений увеличиваются, верно? - person David Zhao; 15.08.2012