Почему hello world на symfony грузится 72 секунды?
Решил выбрать фреймворк для проекта. Установил yii, потестировал, немного не понравился сам фреймворк, хотя работает быстро. Решил потестить symfony 2. Скачал сборку helloWorld с оф. сайта, установил, открыл и… через 72 секунды увидел результат. Я конечно понимаю, что нетбук с атомом очень медленный, но чтобы 72 секунды открывать страничку… В чем может быть проблема? Или symfony 2 реально настолько ущербна, что минуту генерирует мне ответ? И вообще, понимаю, что тема для холивара, но по соотношению мощность\производительность кто что может посоветовать. Я понимаю, что узким местом все равно обычно становятся запросы к базе, но посмотрев на симфони у меня как-то сразу отпало желание использовать этот фреймворк и возник некий панический страх перед остальными. До этого работал на zend'e, знал, что он медленный, но это было порядка 500 мс, но не больше…
Может быть при первом запросе генерировался кеш долго?
Тоже недавно его решил попробовать — у меня такое только если кеш сбросить — первый запрос долгий а потом всё ок.
Ну т.е., условно говоря, я выкатываю обновления на продакшн, и первый пользователь, который зайдет, будет прогревать кеш больше минуты? При включенном кеше — 0,7 секунды. Будем исходить из того, что 1-2 секунды это нормально для выполнения на моем нетбуке. Почему тогда без кеширования в 35-70 раз дольше? С yii, например, такой проблемы нет.
Спасибо, не знал. Ну т.е. все таки получается, что это нормально поведение фреймворка? Или что-то не так настроено? Просто всегда думал, что тормозить должно начинать точно не с hello world. Что ж там такого сложного в недрах происходит?
Нет, 72 секунды даже на разгорев много. У меня тяжеленный сайт разгоревается секунд 10, hello world за миллисекунды обрабатывается. Где-то явно есть проблема.
Разрешите тогда еще вопрос. В каком направлении копать? ACP я не устанавливал. Предположим, что на этом тоже теряю секунды. Запросов к бд нет. Запускаю через app_dev (насколько понял, в этом режиме кеш не работает). Что еще может быть? Неужели я на тестовом сервере без использования кеша должен ждать по 10 секунд? Как вы тестируете Ваше приложение? Внесли исправление, залили, и ждете 10 секунд загрузки?
Кеш в dev-режиме работает, только обновляется при изменении файлов. Так что нет, 10 секунд я не жду. А APC все же поставьте. На какой OS кстати стоит веб-сервер?
Вообще ubuntu, но конкретно этот запуск был на xampp под виндой xp. Т.е. все таки можно на нем разрабатывать. А то я уже напугался ) А стоит ли сам фреймворк всего этого?
Под виндой есть определенные проблемы с производительностью в dev-режиме. Стоит или нет вам решать. Я пока альтернатив не вижу, все из-за отличной архитектуры фреймворка.
Мне тоже понравился фреймворк, но когда я увидел в профайлере время загрузки, то у меня в голове возникло слово «говнокод». Спасибо за разъяснение. Попробую под ubuntu
После установки apc и прогрева кеша стало лучше. Видимо все дело в винде все таки, как сказали выше, т.к. на ubuntu до прогрева 3 секунды. После прогрева. 250мс. Не думал, что ОС так сильно влияет. Спасибо за советы
Говнокодом это не может быть по определению. У людей (в частности у создателя symfony 1 и 2 — Fabien Potencier) есть огромный опыт как в разработке фреймворка, так и в программировании в целом.
А когда профайлером смотрели время загрузки, не пробовали посмотреть какая именно часть съедает столько времени?
Понимаю, что вы уже разобрались, что дело было в ОС, но почему же под виндой так долго?
Я сейчас его изучаю после CodeIgniter, и с уверенностью могу сказать что Symfony 2 прекраснен!
Кстати у меня на WAMP нету проблем с долгим кешированием — всё обрабатывается относительно быстро!
Мне очень жаль, что Вы невнимательно читаете. Я спрашиваю из-за чего это. А с умным видом сказать что-то совершенно бесполезное и уйти — я так тоже умею.
Как же, блин, бесят эти «Если блаблабла, то мне вас очень жаль». Зачем эта псевдоуважительносочувственная форма с обращением на «вы», если хочется написать «Ты тупой, а я ромашка»?
В общем случае 72с похоже на ситуацию, когда скрипт лезет в интернет за проверкой обновлений (или еще чем), не дожидается ответа (файрволл блочит и/или сайт не отвечает), запрос сбрасывается по таймауту и скрипт отрабатывает дальше, выдавая результат.
Конкретно за симфонию не знаем, но с другими цмф/цмс такая ситуация бывает.
Нет, никуда не лезет. Вендоры установил только, но это из консоли отдельной операцией. Все дело скорее всего в особенностях операционной системы и кеше. Ответил в коммениатрии выше.
Господа, вы зря заминусовали Meliborn. Может быть он и выразился надменно, но указал на Вашу ошибку. Поясню подробнее: в php.ini по умолчанию стоит максимальное время исполнения скрипта — 30 секунд. То есть если Симфони не отдал бы ответ в течении 30 секунд, то сценарий был бы прерван, и вы бы увидели ошибку, вместо «Hello World!». Это значит, что проблема не в фреймворке, а в браузере, ОС или еще чем-то тут уже может быть очень много вариантов, и не видя вашего компьютера сказать сложно.
Я может чего не понимаю, но почему Вы думаете, что я не изменил это значение. Или оно не меняется где-то в конфиге фреймворка? В конце концов я не секундомером засекал время, а его мне отдал профайлер симфони, что говорит о том, что она столько и работала
Я не знаю, меняли ли вы это значение. Если не меняли, то установленное в php.ini значение этого параметра вы можете проверить запустив вот такой сценарий:
<?php
echo ini_get('max_execution_time');
?>
Погодите-ка…
А Вы настроили рабочее окружение в соответствии с требованиями симфони?
Страница /Symfony/web/config.php больше не просит вас что-то исправить или установить?
Ну тогда понятно.
Вообще, я слышал, что по сравнительным тестам Symfony2 на 75% процентов превосходит Yii по скорости (сам я долгое время работал с Yii, теперь перехожу на симфони). По поводу того, как симфони будет работать, если не удовлетворить его требования к рабочему окружению — тут я уже не знаю. Думаю проще установить все правильно.
tnz, если я не ошибаюсь, тема про превосходство симфони на 75% — это тема вопроса на yiiframework.ru или yiiframework.com — там и пруфлинк на тесты — поищите по тегу Symfony на русском или на главном форуме — там человек задает вопрос, кто что думает о симфони.
Причина перехода указана выше kazmiruk'ом — более приятная и правильная архитектура. Yii замечателен, но для крупных проектов, а особенно для интерпрайза — симфони подходит намного лучше.
Если Вы используете последнюю версию (которая 2.1.0-DEV) посмотрите в профайлере sf2 на что уходит время генерации страницы. Там сделан достаточно подбробный Timeline.
Может быть при первом запросе генерировался кеш долго?
Тоже недавно его решил попробовать — у меня такое только если кеш сбросить — первый запрос долгий а потом всё ок.
Я понимаю. что вы сейчас снова заминусуете, но просто скажите мне пожалуйста, за что вы минусуете? За то, что люди дают ответы на вопросы?
Просто представьтесь пожалуйста в коменте, и поясните. за что минусуете — обещаю, в карму не наплюю.
Не тупите и минусовать никто не будет. Выше вам ответили что человеку отдало значения профайлер симфони, значит сама симфони работала больше 30 сек, и значит таймаута не было. Вы же дальше начинаете на этой ереси настаивать. Плюс к тому же yii и zend работали меньше минуты, тоесть с браузером и ноутом все нормально, в пределах допустимого. Выводы можно строить очень просто, нужно просто внимательно читать что люди пишут а не тупо стоять на своем.
d4rkr00t, я об этом и сказал, что скрипт бы выдал ошибку, если б время исполнения превысило max_execution_time, и просто предположил, что эта опция установлена по умолчанию.
taliban, после сообщения о профайлере я на своем и не стоял — читайте что я писал — я только сказал, что не знаю. менял ли человек значение max_execution_time, и сказал, как посмотреть текущее значение этого параметра. А следующий мой коммент уже не относился к max_execution_time.
Так что не тупити вы, господа, — минусуете ни за что — каждый увидел минус, и считает нужным присоединиться к флэшмобу и поставить минус и от себя.
В symfony2 действительно много полезных плюшек, которые жрут ресурсы, особенно при сбросе кэша. Взять хотя бы аннотации. Парсится, в общем, довольно много, поэтому warmup — довольно долгая процедура. Причем, кэши, естественно, для каждого окружения раздельные. То есть если работа идёт одновременно с dev и prod — сбрасывать в консоли надо оба (я это делаю параллельно для всех env сразу).
Что касается системы — помимо тормознутости винды, есть немало тормозов, которые присасываются к PHP — XDebug, xhprof и т.д., у меня, например, XDebug замедляет тесты в 10 раз при сборе метрик покрытия кода.
Но вообще довольно шустрый фреймворк, не самый быстрый, но архитектурные идеи в нём заложены на будущее, я думаю.
$kernel = new AppKernel('dev', <b>false</b>);
Попробуйте запустить с отключенным дебагом, также для повышения производительности советую отключать Monolog