我一直在研究一个新的工作项目,并且遇到了一个奇怪的问题,即我的应用程序需要很长时间才能在dev和prod中返回响应。但是有时它会很快返回响应。我在这里阅读了几则有关可能原因的文章,但没有一个能解决我的问题。
起初我以为是因为我提出了一些子要求,所以我删除了这些要求,但仍然遇到相同的问题。
我的平均请求在DEV中只有20-30MB之间。我正在尝试使用探查器来帮助我弄清这可能来自哪里,但是每个请求都将请求中最长的部分显示为另一个区域。例如,在一个请求中,最长的部分是 Controller ,在对同一页面的另一个请求中,它是模板监听器,在另一个请求中是安全/防火墙监听器。
例如,我主页上的快速请求大约需要116毫秒。我等待一分钟,刷新,它需要9467毫秒,甚至我已经看到它花费了30,000+毫秒。
虽然我可以在开发模式下稍稍慢一些,但是prod在做相同的事情。有时快,有时慢。 APC缓存已启用。通常,根据页面的不同,我的学说查询只需要4到20毫秒即可完成。
我运行的是PHP 5.3,但决定升级到5.4,看看是否有帮助,仍然是同样的问题。我正在使用最新的稳定版本的nginx。 FPM中的PHP。 Server正在运行其他网站,没有问题-magento和symfony 1.4 Web应用程序都没有类似问题。
服务器是具有32GB RAM的四核双核,所以我有足够的资源。在我发出请求时观察进程,我看不到异常的CPU或内存负载。
我还没有尝试在另一台机器上运行该应用程序-但是我不明白为什么我所有其他应用程序都可以正常运行,而这个应用程序是唯一遇到这种缓慢情况的应用程序。我可能今晚会测试一下,但是我想看看是否有人以前曾遇到过这样的问题。
当请求花费很长时间时,以下是我的探查器的一些快照:
这是两个请求速度快于预期的时间
这是我的composer.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"
}
}
}
最佳答案
我请您引用另一个(相同)问题的答案:
Problems with symfony performance
我猜你应该在PHP.ini中将这两个参数设置为比默认值高得多的值,即
realpath_cache_size = 4096k
realpath_cache_ttl = 7200
关于Symfony2有时开发速度和生产响应时间都很慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16344060/