2013-05-02 6 views
6

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:

enter image description here


enter image description here


enter image description here


enter image description here


Oto dwa, gdy wniosek został szybko jak oczekiwano

enter image description here enter image description here

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" 
     } 
    } 
} 
+0

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ść? –

+2

Odpowiedź tutaj działała dla mnie: http://stackoverflow.com/a/17914570/118593 – TautrimasPajarskas

+0

ten może odpowiedzieć na pytanie: http://stackoverflow.com/questions/12905404/symfony2-slow-initialization-time#answer -17914570 –

Odpowiedz

3

odsyłam do odpowiedzi w innym (samego) Pytanie:

Problems with symfony performance

Chyba powinieneś ustawić w php.ini te dwa parametry na znacznie wyższych niż wartości domyślnych, tj.

realpath_cache_size = 4096k 
realpath_cache_ttl = 7200 
+1

Dlaczego jest on obniżany? –

+0

Thx ... to rozwiązało mój problem: D – Stony