Локальная AppFabric и локальный Memcache — строго говоря, производительность

#c# #memcached #appfabric

#c# #memcached #appfabric

Вопрос:

На работе мы обсуждаем возможность создания выделенного сервера кэша в памяти. Два варианта — сервер кэша Windows AppFabric и Memcached. Итак, я настраиваю два теста: один для AppFabric и один для Memcache.

Memcache тестирует кэш памяти ОС / устройства VMware Appliance, виртуализированный в VMware Workstation, четырехъядерный процессор с 8 ГБ оперативной памяти с помощью MemCachedDOTnet_2.0 C # API.

После того, как я поместил несколько объектов в кэш, я запустил свои тайминги и получил среднее значение.

  • Поставьте 0-1 МС (точность была только до миллисекунд)
  • Получите 14-15 МС

На сервере кэша AppFabric нет виртуальной машины, потому что это все Windows. Четырехъядерный процессор с 8 ГБ оперативной памяти. То же самое, что я поместил несколько объектов в кэш, прежде чем начал работать. Опция локального кэша была отключена в настройках клиента.

  • Поставьте 0-1 МС (точность была только до миллисекунд)
  • Получаем 0-1 мс (точность была всего до миллисекунд)

Теперь вопрос в том, что я слышал, что MemCached работает очень быстро, но я предположил, что он будет быстрее, чем AppFabric, но не на 15 мс медленнее при получении по сравнению с AppFabric. Какова производительность всех остальных для AppFabric и / или MemCache. Я просто ищу необработанные числа МС и размер объекта или вещи, на которые я должен обратить внимание, чтобы увидеть, могу ли я сделать так, чтобы цифры больше соответствовали моим ожиданиям или параметрам для установки или проверки.

Комментарии:

1. Я очень успешно использовал AppFabric и обнаружил, что он очень хорошо работает в сценариях с высоким трафиком и тысячами одновременных подключений. Тем не менее, я тоже нахожу удивительным, что memcache, похоже, работает так плохо. Я никогда раньше не сталкивался с MemCachedDOTnet_2.0, так что, возможно, это тоже может быть бутылочным горлышком, хотя моей первой догадкой, безусловно, была виртуальная машина.

2. @s1mm0t Я должен был подумать о клиенте, который я использовал. Я попытаюсь взять еще несколько и отредактировать вопрос, чтобы перечислить их выше, как только у меня будет еще несколько результатов.

3. josh вместо того, чтобы запускать Memcache на виртуальной машине, попробуйте запустить его на компьютере с * nix, а затем запустите сравнительные тесты. Memcache был создан для работы в основном в системах * nix. Порты Windows заставили его работать в среде Windows. Это не значит, что он работает наилучшим образом при использовании Windows в качестве хоста. Кроме того, если вы попробовали предложение Пратула ниже, не могли бы вы сообщить нам о результатах?

4. @user20358 поскольку срок службы app fabric истекает, я закрываю эти вопросы, поскольку программное обеспечение больше не будет поддерживаться. Подробнее здесь blogs.msdn.com/b/appfabric/archive/2015/04/02 /…

5. Я голосую за то, чтобы закрыть этот вопрос как не относящийся к теме, потому что appfabric 1.1 больше не будет поддерживаться Microsoft. Это предотвратит будущие комментарии. Я не мог найти правильную причину для закрытия устаревшего программного обеспечения.

Ответ №1:

Я вижу, что вы включили локальный кэш в Appfabric. Когда локальный кэш включен, клиент кэша сохраняет ссылку на объект локально. Это сохраняет объект активным в памяти клиентского приложения. Когда приложение запрашивает объект, клиент кэша сначала проверяет, находится ли объект в локальном кэше. Если это так, ссылка на объект возвращается немедленно, без обращения к серверу. Если он не существует, объект извлекается с сервера. После сохранения объектов в локальном кэше ваше приложение продолжает использовать эти объекты до тех пор, пока они не будут признаны недействительными, независимо от того, были ли эти объекты обновлены другим клиентом в кластере кэша. По этой причине лучше всего использовать локальный кэш для данных, которые меняются нечасто.

Поскольку у вас был включен локальный кэш, объект был немедленно возвращен без обращения к кластеру. Если ваши данные часто меняются и у вас низкий допуск к устаревшим данным, вам следует отключить локальный кэш. Попробуйте те же тесты на Windows Server Appfabric 1.1 с отключенным локальным кэшем.

Ответ №2:

Почему бы вам не протестировать версию memcached для Windows, чтобы сравнивать яблоки с яблоками? Когда вы запускаете один из них на виртуальной машине, вы также получаете накладные расходы на дополнительную ОС..

Комментарии:

1. 1. Из порта Windows memcached: «Этот порт не поддерживается официальной командой memcached». 2. Я понимаю, что с дополнительной ОС есть накладные расходы, но если put равен 0-1 мс, а get равен 14-15 мс, кажется, что накладные расходы могут быть связаны с программным обеспечениемне уровень виртуальной машины. 3. На работе любое решение будет находиться в виртуальной машине, поэтому накладные расходы всегда будут присутствовать.