В течение довольно продолжительного времени о нём не было никаких новостей, но, после долгого ожидания, PHP 7 наконец-то вышел 3 декабря 2015 года. Мы решили протестировать самые популярные CMS, основанные на PHP, чтобы проверить как они работают с PHP 7.

Это великий день для всех, кто регулярно использует PHP — для разработчиков, хостинговых компаний, и даже для конечных пользователей. Выход новой версии даст мощный импульс развитию этого популярного языка веб-разработки. И в конечном итоге это выльется в более быструю работу веб-сайтов и веб-сервисов.

Мы уделяем очень много внимания оптимизации времени загрузки веб-сайтов, и выпустили ряд руководств на тему, например: A Beginner’s Guide to Website Speed Optimization, Best Free Website Performance Testing Tools и другие.

Для оценки производительности нового интерпретатора PHP мы прогнали через несколько бенчмарков ряд популярных продуктов, использующих PHP 5.6.16, PHP 7.0 и HHVM 3.10.1. Тесты проводились на «голом железе», чтобы виртуализация не повлияла на конечный результат. В сравнении участвовали:

  • WordPress 4.3.1,
  • Drupal 8,
  • Magento 2.0 CE,
  • OctoberCMS build 309,
  • PyroCMS v3 beta2,
  • Flarum v0.1.0-beta.4.

Забегая вперёд, скажем, что HHVM победил. В нашем проекте мы не будем отказываться от политики «HHVM-прежде-всего». Так как мы ориентируемся на сайты с большим трафиком, то для нас первостепенное значение имеют лучшие технологии из всех доступных, и это явно не PHP 7. Тем не менее, мы будем предлагать новую версию в качестве резервного решения, и поэтапно полностью перейдём на него с PHP 5.6 в ближайшие недели.

Конфигурация сервера, которая использовалась для бенчмарков:

  • Intel Xeon E5-2630v3 (8 процессорных ядер и 16 потоков),
  • 64 Гб оперативной памяти,
  • 2 х 4 Тб SAS 7200 об/мин HGST диски в RAID 0.

Также мы использовали MariaDB 10.1.9 для MySQL сервера и Nginx 1.9.7 для веб-сервера.

WordPress 4.4


В качестве тестового сайта была выбрана главная страница свежеустановленного wptest.io. В течение минуты эту страницу одновременно нагружали 15 пользователей. Для WordPress это был единственный тест, где мы могли бы использовать HHVM’s Repo Authoritative mode без трудоемкого модифицирования программного обеспечения. Это могло бы увеличить производительность, но далеко не каждый будет этим заниматься.



  • WordPress 4.4 HHVM RepoAuthoritative результат: 358,33 оп./сек.
  • WordPress 4.4 HHVM результат: 335,13 оп/сек
  • WordPress 4.4 PHP 7.0 результат: 287,92 оп/сек
  • WordPress 4.4 PHP 7.0 без OPcache результат: 84,87 оп/сек.

WordPress 4.3.1


Здесь 15 пользователей снова в течение минуты одновременно нагружали главную страницу wptest.io.



  • WordPress 4.3.1 HHVM RepoAuthoritative результат: 375,48 оп/сек
  • WordPress 4.3.1 HHVM результат: 357,69 оп/сек
  • WordPress 4.3.1 PHP 7.0 результат: 306,24 оп/сек
  • WordPress 4.3.1 PHP 5.6.16 результат: 106,45 оп/сек

Drupal 8.0.1


В качестве тестового сайта мы использовали свежеустановленную CMS в стандартной конфигурации. На главную страницу были выведены 50 тизеров с демо-данными (через модуль Devel). Страницу в течение минуты одновременно нагружали 15 пользователей.

Мы получили настолько интересный результат, что после тестирования полностью удалили Drupal, установили его заново по инструкции и повторно провели все испытания. И получили аналогичные результаты!



  • Drupal 8 HHVM результат: 1739,28 оп/сек
  • Drupal 8 PHP 7.0 результат: 917,10 оп/сек
  • Drupal 8 PHP 5.6.16 результат: 794,20 оп/сек

Magento 2.0 Community Edition


Использовалась стандартная установка с официальными демо-данными. Нам пришлось включить внутренний кэш Magento, так как в противном случае мы получали несерьезные 5 оп/сек. Домашнюю страницу одновременно в течение минуты нагружали 15 пользователей.



  • Magento HHVM результат: 192,19 оп/сек
  • Magento PHP 7.0 результат: 183,87 оп/сек
  • Magento PHP 5.6.16 результат: 113,34 оп/сек.

OctoberCMS


Эта CMS, основанная на Laravel, дала нам возможность заодно протестировать и сам фреймворк Laravel. Во время установки мы выбрали тему Vanilla, включающую в себя систему пользователей, блог и форум. В течение минуты главную страницу одновременно нагружали 15 пользователей.



  • OctoberCMS HHVM результат: 583,07 оп/сек
  • OctoberCMS PHP 7.0 результат: 407,89 оп/сек
  • OctoberCMS PHP 5.6.16 результат: 248,19 оп/сек.

PyroCMS v3 beta2


Еще одна CMS, основанная на Laravel. Мы использовали стандартную установку, добавили в блог один пост, и эту «отдельную страницу» 15 пользователей одновременно тестировали в течение одной минуты.



  • PyroCMS HHVM результат: 177,39 оп/сек
  • PyroCMS PHP 7.0 результат: 145,95 оп/сек
  • PyroCMS PHP 5.6.16 результат: 75,17 оп/сек.

Laravel 5.1.11


Мы установили доступный по умолчанию пакет фреймворка Laravel и протестировали его «приветственный экран» без каких-либо соединений с базой данных. Не забывайте, что OctoberCMS, протестированный выше, построен на базе Laravel, так что это выглядит так, словно вы добавляете дополнительные модули, да и сам HHVM забирает на себя инициативу. Мы запустили тесты на одну минуту с 10 пользователями одновременно.

При использовании команд оптимизации php artisan –force и php artisan config:cache результаты были в полтора раза лучше, чем представленные ниже.



  • Laravel 5.1.11 HHVM результат: 1128,41 оп/сек
  • Laravel 5.1.11 PHP 7.0 результат: 1363,24 оп/сек
  • Laravel 5.1.11 PHP 7.0 без OPcache результат: 245,60 оп/сек.

Flarum v0.1.0-beta.4


Flarum — восхитительно простое программное обеспечение для создания форума. Это общий преемник esoTalk и FluxBB. Поскольку он использует сочетание фреймворков Laravel, Zend и компонентов Symfony (актуальный набор программного обеспечения в мире PHP), то мы решили, что будет интересно включить его в список.

Но похоже, что мы немного погорячились, и в этой статье для Flarum придется оставить заглушку — он не работает ни с HHVM, ни с PHP 7. На HHVM мы получаем ошибку “Fatal error: Return inside a finally block is not supported in vendor/flarum/core/src/Foundation/Application.php on line 120”, а на PHP 7 сообщение: “Notice: Undefined property: stdClass::$data in vendor/flarum/core/src/Http/Controller/ClientView.php on line 326”. Вдобавок возникают многочисленные ошибки JavaScript.

Резюме


Представленные в диаграммах результаты говорят сами за себя. Если вы хотите включить в тест другой фреймворк или приложение, дайте нам знать! Комментарии к тестам приветствуются.

Комментарии (29)


  1. Stepanow
    18.12.2015 10:09
    +18

    Неслабо слона разогнали!
    image
    Отставание от HHVM несущественное в большинстве тестов.


  1. Lisio
    18.12.2015 10:58
    +1

    Что вы имеете в виду под нагрузкой 15 пользователями?


    1. DevMan
      18.12.2015 11:57

      15 конкурентных (одновременных) посетителей.


    1. zelenin
      18.12.2015 12:02
      -1

      видимо 15 конкурирующих запросов. (упс, ответили выше)


      1. Lisio
        18.12.2015 12:51
        -1

        Если бы указали конкурирующие запросы, то вопроса бы не было. А так по тексту выходит, что сидят 15 человек и синхронно ломают F5.
        В общем, не хватает нормального описания методики тестирования.


  1. EnterSandman
    18.12.2015 11:01

    Пойду ка я обновлюсь до семерки


    1. EnterSandman
      18.12.2015 12:02

      Надо сказать что субъективно после 5.5 седьмая работает раза в два быстрее


      1. QtRoS
        18.12.2015 22:29

        Всего за час удалось обновиться? :)


        1. dkuzevanov
          18.12.2015 23:12
          +5

          yum remove php56w*
          yum install php70w*
          systemctl restart php-fpm
          :)


        1. Alexufo
          19.12.2015 04:57
          +1

          Поддерживаю. yii2 с большой таблицей с разными связями генерирует страницу в два раза быстрее при этом памяти стал кушать на 30% меньше. Хочу сказать что под винду php явно медленнее работает.


  1. ibKpoxa
    18.12.2015 12:10
    +9

    А как отличается нагрузка на сервер (проц, память) при одинаковом числе запросов в секунду?


  1. dimkanevidimka
    18.12.2015 13:48

    думаю для тестов D8 надо немного поиграть с настройками opcache. Увеличить opcache.max_accelerated_files integer, opcache.memory_consumption


  1. Godless
    18.12.2015 14:11
    +1

    А протестируйте плиз Owncloud!
    А то они тоже объявили, что готовы к 7ке…
    На продакшине переходить как-то боязно, а отдельный стенд разворачивать некогда… 8\


    1. turbo_exe
      18.12.2015 14:41

      код за вас не пописать?


      1. Godless
        18.12.2015 14:58
        +12

        Нет спасибо, просто в тексте автор написал

        Если вы хотите включить в тест другой фреймворк или приложение, дайте нам знать! Комментарии к тестам приветствуются.

        Потому и предложил…


  1. alexkuzko
    18.12.2015 14:19
    +4

    Возник странный вопрос, а почему с PHP 5.6 не использовали opcache? Полагаю, результаты не были бы такими низкими.


  1. VladimirAndreev
    18.12.2015 16:07
    +1

    а почему Laravel 5.1 мучили 10 пользователей вместо 15?


  1. Nashev
    18.12.2015 16:34

    Забавно, на Хабре всего две статьи упоминают hhvm


    1. ibKpoxa
      18.12.2015 17:01

      Если смотреть не по тэгу, а поиском, то сейчас у меня нашлось 89 статей.


  1. VolCh
    18.12.2015 17:10
    +1

    А почему часть тестов не содержит PHP 5.6?


  1. velikan5
    19.12.2015 01:40
    +4

    Symfony? YII? LiveStreet, в конце концов?


    1. LIAL
      20.12.2015 21:51

      Если вы хотите включить в тест другой фреймворк или приложение, дайте нам знать!

      Присоединяюсь к Yii, только наверно 2 версию стоит брать, а не первую, тк имхо кто сидит на 1-ой, не то что на PHP7, на 5.6 не всегда смогут спрыгнуть


      1. AlexGx
        21.12.2015 15:54

        yii1.1 на данный момент совместим с php7, только забирать надо последнюю версию с мастера на гитхабе.


  1. demonit
    19.12.2015 09:11
    -2

    а где какая нить Joomla?! Один из самых популярных двигов и нет с списке!


  1. TheEvil
    19.12.2015 11:11

    Drupal 7 тоже хорошо бы протестить — он ещё долго будет актуален.

    P.S. А, понял, слова с предложением сообщить о желаемых претендентах на тестирование — это просто переведённые слова из оригинала, так что ждать обновления не стоит.


  1. AlexGx
    20.12.2015 20:27
    +1

    Есть мнение что HHVM потребляет гораздо больше cpu, чем php7. С учетом того, что php7 практически сравнялся с HHVM по производительности, при этом не имеет тех ограничений, в отличие от HHVM, последний вообще не вижу целесообразным в использовании. На своих проектах при миграции на php7 получился прирост ~2 раза по скорости генерации страницы и по потреблению ОЗУ.


    1. VolCh
      21.12.2015 10:08

      при миграции на php7 получился прирост ~2 раза… по потреблению ОЗУ.


      Стал в два раза больше жрать памяти?


      1. AlexGx
        21.12.2015 12:26

        меньше


  1. VolCh
    21.12.2015 10:08

    .