« Про запекание видеокарты | svchost.exe жрущий процессор » |
php 5.5 + opcache + xcache
Итак, если кто не в курсе, для php есть акселераторы. Опять, же, если кто-то упустил, то до версии 5.5 они были только сторонними и из них xcache может и не всех рвал по производительности, но не отставал и при этом был стабильным. Сейчас с php 5.5 идет штатное расширение opcache (в девичестве Zend Optimizer+), которое говорят ощутимо шустрее остальных. Но разумеется есть "но" - у opcache напрочь отсутствует кэш пользовательских данных. Т.е. вот в тех же XCache или APC можно просто взять и сохранить свои данные в памяти для будующих поколений. Не memcache конечно, но за глаза хватает чтобы не лазить постоянно в базу за каждой фигней.
Специально ради таких случаев существует APCu, т.е. APC, у которого отрезали все, кроме как раз таки пользовательского кэша. Но затык в том, что я до сих пор пользовал xcache и переписывать свои скрипты у меня желание не очень-то велико. Благо, у xcache вроде кэш опкодов и пользовательских данных, это две разные фичи и их можно отключать по одной. Ну и до кучи, на VPSке у меня стоит php 5.4, так что еще один вопрос - стОит-ли вообще обновляться.
В раздумьях наткнулся на http://massivescale.blogspot.ru/2013/06/php-55-zend-optimiser-opcache-vs-xcache.html, откуда следует, что opcache шустрее xcache'а чуть ли не на 20%, причем в услових похожих на мои. В общем, надо заценить и повторить самому.
В виртуалку (kvm, 1 ядро Zeon@2400Mhz, 1 гиг памяти, диск на raid10) был вогнан Debian 7.2 на котором оказались Lighttpd 1.4.33, PHP 5.5.5 и XCache 3.1.0. Так же, как по ссылке выше, была установлена Joomla и запущен ApacheBench. Три запуска как в вышеуказанном тесте, и еще один с обоими кэшерами сразу, но отключенным кэшем опкодов у xcache. Результат в общем-то тот же - чистый PHP упирается в проц, c XCachе иногда упирается в проц, с opcache такого практически не случается. У меня разница между кэшерами оказалась порядка 10%. Ну и немаловажный (опять же, для меня) момент - сосуществование этих двух кэшеров (при условии отключения кэша опкодов у xcache) вполне возможно и на производительности не сказывается.