Мы ищем инфраструктуру PHP для работы в будущем и в настоящее время тестируем продукты с помощью Symfony 2. Для этого мы переработали наш API и внедрили его в виде пакета в Symfony. Оказалось, что Symfony кажется очень медленным – на самом деле намного медленнее, чем наша старая (даже не продуманная) система.
Мы попытались оптимизировать производительность путем кэширования байтового кода (для этого используется APC). Хотя мы заметили значительное улучшение производительности (до: около 3 секунд для загрузки API, после: 0,6 секунды (в среднем на 0,5 секунды меньше, чем наша старая система без APC)), мы взволнованы – но все же не очень доволен высокой загрузкой такой простой задачи, как получение одного результата из почти пустой базы данных.
Я не знаю, но я мог представить, что это связано с тем, что Symfony автоматически загружает все классы, даже если это не требуется для конкретного пакета.
Теперь, прежде чем мы сфокусируемся на шести Symfony, мы хотели бы искать дальнейшие оптимизации, возможно, способ исключить ненужные компоненты в конкретном комплекте, поскольку я лично считаю, что это будет иметь большое значение.
Я был бы благодарен за любые идеи о том, как улучшить производительность, получить отчеты с использованием Symfony или что-нибудь еще, что может быть полезно для нас в поисках инфраструктуры.
Редактировать:
Некоторая информация об испытательной среде:
Кроме того, все тесты выполняются на локальной копии нашей системы, поэтому возможные сетевые проблемы могут быть исключены.
Эти точки могут оптимизировать производительность вашего приложения:
Обновите PHP. Рост производительности между PHP 5.3 и PHP 5.4 очень высок. PHP 5.5 будет еще лучше, но он не поддерживается всеми дистрибутивами, такими как Debian 7.
NGINX быстрее Apache, и конфигурация проще.
Использование PHP-FPM с NGINX – хорошая комбинация. Вы также можете запустить свой PHP с HHVM, который в среднем в 2 раза быстрее, чем PHP-FPM, если вы замените Symfony / Assetic на Grunt. Внимание: HHVM требует более тщательной проверки и тестирования перед безопасным развертыванием. Вы можете следить за этими двумя статьями (по-французски): JoliCode и Big Brains Company
Расширение PHP APC устарело. Я думаю, что XCache, Memcached или Redis лучше, и они также наиболее поддерживаются на данный момент. Для PHP> = 5.5 APCu может использоваться как замена для APC.
Кроме того, вы можете прочитать несколько статей, посвященных оптимизации Symfony2 и предоставить тесты Twig.
Статьи PHP:
Статьи Symfony2 и Twig:
Другие оптимизации:
Вы смотрели этот пост в блоге? http://symfony.com/blog/push-it-to-the-limits-symfony2-for-high-performance-needs
Согласно вашей информации, я могу посоветовать вам попробовать php 5.5 или 5.6 и NGINX с PHP-FPM, он может на 40% быстрее или больше.
Вы можете попробовать подход, предложенный в этой статье: http://stfalcon.com/ru/blog/post/performance-symfony2-doctrine2-orm
Автор предлагает:
Описанный код доступен на github: https://github.com/lensky84/performance