Сравнение производительности MemCached с Disk Caching - PullRequest
6 голосов
/ 18 июня 2010

Хотелось бы узнать производительность Memcached на удаленном сервере (в той же локальной сети) с Disk Caching. Помимо Memcached - это масштабируемое решение для кэширования, было бы какое-то преимущество использования Memcached относительно производительности по сравнению с дисковым кэшированием.

С уважением, Mugil.

Ответы [ 2 ]

7 голосов
/ 18 июня 2010

Из моего личного опыта я обнаружил, что memcached не так быстр, как кеш диска. Я полагаю, что это из-за кэширования дискового ввода-вывода операционной системы, но memcached допускает «масштабируемый» кэш, то есть, если у вас более 1 сервера, обращающегося к одним и тем же данным кэша, он будет масштабироваться (особенно потому, что у memcached очень низкая загрузка ЦП по сравнению в PHP). Единственный способ разрешить более чем одному компьютеру доступ к дисковому кешу одновременно - это монтирование по сети, которое наверняка снизит скорость доступа. Еще одна вещь, о которой вам следует беспокоиться при кэшировании файлов, это сборка мусора для предотвращения насыщения диска.

По мере масштабирования вашего сайта (-ов) вы, возможно, захотите позже передумать, поэтому при любом выборе используйте оболочку кеша, чтобы вы могли легко изменить свой метод. Zend предоставляет хороший API .

2 голосов
/ 18 июня 2010

Чтения будут иметь примерно одинаковую скорость (поскольку ОС будет кэшировать файлы, к которым часто обращаются) ... Разница будет с записью. С memcached все, что нужно сделать, это написать оперативную память. Но с файловым хранилищем все становится немного сложнее. Если у вас включено кэширование записи, оно будет примерно таким же быстрым. Но большинство серверов отключили его (если только у них нет кэша с резервным питанием от батареи) для более надежной записи в случае сбоя питания. Поэтому, если у вас нет кэша записи, для завершения записи потребуется выполнить запись на диск (может потребоваться более 5 мс на дисках серверного уровня, возможно, больше на оборудовании настольного уровня), прежде чем вернуться. Таким образом, запись файлов может быть значительно медленнее, чем memcached.

Но есть еще одна кавиата. С файлами, когда вы хотите написать, вам нужно заблокировать файл самостоятельно. Это означает, что если два процесса пытаются записать в один и тот же файл, запись должна завершиться последовательно. При использовании memcached эти две записи помещаются в очередь и выполняются в порядке поступления, но процессу записи (PHP) не нужно ждать фактической фиксации ...

...