Pracowałem nad nowym projektem do pracy i wpadłem w dziwny problem, w którym moja aplikacja potrzebuje dużo czasu, aby zwrócić odpowiedź zarówno w wersji dev, jak i prod. Czasami jednak bardzo szybko zwraca odpowiedź. Przeczytałem kilka postów na temat możliwych przyczyn, ale żaden z nich nie rozwiązał moich problemów.Symfony2 Czasami powolny program Dev i czas reakcji na produkcję
Początkowo myślałem, że to dlatego, że miałem kilka wniosków podrzędnych, więc usunąłem te, ale nadal miałem te same problemy.
Moje średnie żądanie wynosi tylko od 20-30 MB w DEV. Próbuję użyć profilera, aby pomóc mi dowiedzieć się, skąd to może być, jednak każde żądanie pokazuje najdłuższą część żądania, aby być innym obszarem. Na przykład w jednym żądaniu najdłuższą sekcją był kontroler, w innym żądaniu do tej samej strony był to odbiornik szablonów, a na innym był detektor bezpieczeństwa/zapory ogniowej.
Na przykład szybkie żądanie na mojej stronie głównej zajmuje około 116 ms. Czekam minutę, odświeżam i zajmuje to 9467ms, lub nawet widziałem, że zajmuje 30 000 + ms.
Podczas gdy mogę żyć z odrobiną powolności w trybie dewelopera, prod robi to samo. Czasami szybki, czasem powolny. Bufor APC jest włączony. Ogólnie rzecz biorąc, moje zapytania dotyczące doktryny trwają tylko od 4 do 20 ms w zależności od strony.
Uruchomiłem PHP 5.3, ale zdecydowałem się uaktualnić do wersji 5.4, aby sprawdzić, czy to pomogło, wciąż te same problemy. Korzystam z najnowszej stabilnej wersji nginx. PHP w FPM. Serwer działa na innych stronach internetowych bez żadnych problemów - zarówno aplikacje magento, jak i symfony 1.4 nie powodują takich problemów.
Serwer to quad dwurdzeniowy z 32 GB pamięci RAM, więc mam mnóstwo zasobów. Obserwując procesy w miarę zgłaszania żądań, nie widzę nieprawidłowych obciążeń procesora ani pamięci.
Muszę jeszcze spróbować uruchomić aplikację na innym komputerze - ale nie widzę powodu, dla którego wszystkie moje inne aplikacje działałyby dobrze, a ten jest jedynym, który doświadcza spowolnienia w ten sposób. Prawdopodobnie przetestuję to dziś wieczorem, ale chciałem sprawdzić, czy być może ktoś już wcześniej doświadczył takiego problemu.
Oto kilka migawek z mojego profilera gdy żądanie trwa długo:
Oto dwa, gdy wniosek został szybko jak oczekiwano
To mój kompozytor.json
{
"name": "spliced/commerce",
"minimum-stability": "dev",
"description": "",
"autoload": {
"psr-0": { "": "src/" }
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.2.*",
"doctrine/orm": "2.4.*",
"doctrine/doctrine-bundle": "1.2.*",
"twig/extensions": "1.0.*@dev",
"symfony/swiftmailer-bundle": "2.2.*",
"symfony/monolog-bundle": "2.2.*",
"sensio/distribution-bundle": "2.2.*",
"sensio/framework-extra-bundle": "2.2.*",
"sensio/generator-bundle": "2.2.*",
"jms/security-extra-bundle": "1.4.*",
"jms/di-extra-bundle": "1.3.*",
"symfony/assetic-bundle": "2.1.*",
"kriswallsmith/assetic": "1.1.*@dev",
"vbardales/multiple-app-kernel-bundle": "dev-master",
"avalanche123/imagine-bundle": "v2.1",
"knplabs/knp-menu-bundle" : "dev-master",
"knplabs/knp-paginator-bundle": "dev-master",
"knplabs/knp-components": "*",
"symfony-cmf/routing-extra-bundle": "*",
"stof/doctrine-extensions-bundle" : "dev-master",
"facebook/php-sdk": "3.2.*",
"kertz/twitteroauth" : "*",
"adoy/oauth2" : "dev-master",
"guzzle/guzzle" : "dev-master",
"knplabs/knp-snappy-bundle": "dev-master",
"symfony-cmf/routing-extra-bundle" : "*",
"floriansemm/solr-bundle": "dev-master"
},
"require-dev": {
"zendframework/zendframework": "dev-master",
"elao/web-profiler-extra-bundle" : "dev-master"
},
"repositories": {
"goutte": {
"type": "package",
"package": {
"name": "fabpot/goutte",
"version": "dev-master",
"source": {
"type": "git",
"url": "git://github.com/fabpot/Goutte.git",
"reference": "master"
},
"autoload": {
"psr-0": {
"Goutte": "src/"
}
}
}
}
},
"scripts": {
"post-install-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
],
"post-update-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
]
},
"config": {
"bin-dir": "bin"
},
"extra": {
"symfony-app-dir": "commons",
"symfony-web-dir": "web",
"branch-alias": {
"dev-master": "2.2-dev"
}
}
}
Naprawiłem to i nie wiem jak. Wydaje mi się, że to był problem z uprawnieniami do plików? Szczerze mówiąc nie jestem tego pewien. Czy to nawet możliwość? –
Odpowiedź tutaj działała dla mnie: http://stackoverflow.com/a/17914570/118593 – TautrimasPajarskas
ten może odpowiedzieć na pytanie: http://stackoverflow.com/questions/12905404/symfony2-slow-initialization-time#answer -17914570 –