Я работаю над новым проектом для работы и столкнулся со странной проблемой, когда моему приложению требуется много времени, чтобы вернуть ответ как в dev, так и в prod. Однако иногда он возвращает ответ очень быстро. Я прочитал несколько сообщений здесь о возможных причинах, но ни один из них не решил мои проблемы.
Сначала я подумал, что это из-за того, что у меня было несколько дополнительных запросов, поэтому я удалил их, но у меня все еще были те же проблемы.
Мой средний запрос составляет всего 20-30 МБ в DEV. Я пытаюсь использовать профилировщик, чтобы помочь мне понять, откуда это может происходить, однако каждый запрос показывает, что самая длинная часть запроса находится в другой области. Например, в одном запросе самым длинным разделом был контроллер, в другом запросе к той же странице — слушатель шаблона, в другом — прослушиватель безопасности/брандмауэра.
Например, быстрый запрос на моей домашней странице занимает около 116 мс. Я жду минуту, обновляюсь, и это занимает 9467 мс, или даже я видел, что это занимает 30 000+ мс.
В то время как я могу жить с небольшой медлительностью в режиме разработки, prod делает то же самое. Иногда быстро, иногда медленно. Кэш APC включен. Обычно мои запросы доктрины занимают всего 4-20 мс в зависимости от страницы.
Я использовал PHP 5.3, но решил обновиться до 5.4, чтобы посмотреть, поможет ли это, все те же проблемы. Я использую последнюю стабильную сборку nginx. PHP в FPM. На сервере без проблем работают другие веб-сайты - веб-приложения magento и symfony 1.4 без подобных проблем.
Сервер представляет собой четырехъядерный двухъядерный процессор с 32 ГБ оперативной памяти, поэтому ресурсов у меня предостаточно. Наблюдая за процессами, когда я делаю запросы, я не вижу аномальных нагрузок на процессор или память.
Мне еще предстоит запустить приложение на другом компьютере, но я не понимаю, почему все другие мои приложения будут работать нормально, и только это приложение испытывает такую медлительность. Я, вероятно, проверю это сегодня вечером, но я хотел узнать, не сталкивался ли кто-нибудь с такой проблемой раньше.
Вот несколько снимков из моего профилировщика, когда запрос занимает много времени:
Вот два случая, когда запрос был быстрым, как и ожидалось
Это мой композитор.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"
}
}
}