Сравнение PHP кэшеров в реальных условиях
// 25 марта, 2011 // Highload, PHP, Веб-разработка
Один из моих читателей (тоже Андрей кстати) провел тестирование различных кэшеров опкода PHP на своём проекте. И с его разрешения, публикую результаты проведённых полевых испытаний.
Синтетические тесты
Если вы хотите посмотреть синтетические тесты, то ни есть тут, и тут. Вкратце результаты синтетического тестирования таковы:
В лидерах, по-прежнему, eAccelerator и XCache. Даже помня о точности замеров, не приходится сомневаться, что APC работает в несколько раз медленнее, чем eAccelerator, а XCache плохо переваривает большие объемы данных.
Реальные тесты
Теперь посмотрим тесты на Symfony приложении:
apc (apc.stat=off): ------------------- Transactions: 50000 hits Availability: 100.00 % Elapsed time: 475.69 secs Data transferred: 401.31 MB Response time: 8.90 secs Transaction rate: 105.11 trans/sec Throughput: 0.84 MB/sec Concurrency: 935.97 Successful transactions: 50000 Failed transactions: 0 Longest transaction: 11.25 Shortest transaction: 0.38 apc (apc.stat=on): ------------------ Transactions: 50000 hits Availability: 100.00 % Elapsed time: 488.21 secs Data transferred: 413.08 MB Response time: 9.16 secs Transaction rate: 102.41 trans/sec Throughput: 0.85 MB/sec Concurrency: 937.62 Successful transactions: 50000 Failed transactions: 0 Longest transaction: 12.17 Shortest transaction: 0.66 eacclerator: ------------ Transactions: 50000 hits Availability: 100.00 % Elapsed time: 507.61 secs Data transferred: 401.31 MB Response time: 9.54 secs Transaction rate: 98.50 trans/sec Throughput: 0.79 MB/sec Concurrency: 939.90 Successful transactions: 50000 Failed transactions: 0 Longest transaction: 11.69 Shortest transaction: 0.55 xcache: ------- Transactions: 50000 hits Availability: 100.00 % Elapsed time: 527.36 secs Data transferred: 401.31 MB Response time: 9.93 secs Transaction rate: 94.81 trans/sec Throughput: 0.76 MB/sec Concurrency: 941.45 Successful transactions: 50000 Failed transactions: 0 Longest transaction: 12.98 Shortest transaction: 0.60 any cachers off: ---------------- Transactions: 50000 hits Availability: 100.00 % Elapsed time: 1310.02 secs Data transferred: 401.31 MB Response time: 25.44 secs Transaction rate: 38.17 trans/sec Throughput: 0.31 MB/sec Concurrency: 970.93 Successful transactions: 50000 Failed transactions: 0 Longest transaction: 30.15 Shortest transaction: 0.55
Результаты
С незначительным преимуществом победил APC. Мне, если честно, он тоже нравится. Я перепробовал почти все кэшеры (кроме xCache) и остановился на нём, в т.ч. из-за удобных инструментов мониторинга. Если у вас есть опыт работы с php-кэшерами, делитесь в комментах.
Спасибо!
Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:
Обратил внимание, что такой параметр как Elapsed time — он, ясное дело, для чистого РНР самый большой. Но если Concurrency более-менее стабильно одинаковое, как и Transaction rate, то почему общее время для разных кешеров так сильно отличается. Посмотрите, с xCache 525 секунд, а в APC с отключенной статистикой — 475, в принципе, разница достаточно большая.
читаю различные, сейчас, тесты — у всех различный результат… выбор нужно делать исходя из определенных задач, и уже тогда тестировать
Согласен. Инструмент под задачу, тестить на реальных данных.