Сравнение PHP кэшеров в реальных условиях
Один из моих читателей (тоже Андрей кстати) провел тестирование различных кэшеров опкода PHP на своём проекте. И с его разрешения, публикую результаты проведённых полевых испытаний.
Синтетические тесты
Если вы хотите посмотреть синтетические тесты, то ни есть тут, и тут. Вкратце результаты синтетического тестирования таковы:
В лидерах, по-прежнему, eAccelerator и XCache. Даже помня о точности замеров, не приходится сомневаться, что APC работает в несколько раз медленнее, чем eAccelerator, а XCache плохо переваривает большие объемы данных.
Реальные тесты
Теперь посмотрим тесты на Symfony приложении:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
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, в принципе, разница достаточно большая.
читаю различные, сейчас, тесты – у всех различный результат… выбор нужно делать исходя из определенных задач, и уже тогда тестировать
Согласен. Инструмент под задачу, тестить на реальных данных.