Symfony2有时响应时间慢,无论是开发环境还是生产环境

5
我一直在为工作中的一个新项目而努力,并遇到了一个奇怪的问题,我的应用程序在开发和生产中都需要很长时间才能返回响应,但有时它会非常快地返回响应。我在这里阅读了一些帖子,可能是因为我有一些子请求,所以我删除了它们,但仍然存在同样的问题。
我的平均请求只有20-30MB。我正在尝试使用分析器来帮助我找出问题所在,但每个请求都显示最长的部分都是不同的区域。例如,在一个请求中,最长的部分是控制器,在另一个请求到同一页时,它是模板监听器,在另一个请求中,它是安全/防火墙监听器。
例如,我的主页上的快速请求大约需要116ms。我等待一分钟,刷新后需要9467ms,甚至我看到它需要30,000+ms。
虽然我可以接受在开发模式下有一点缓慢,但生产环境也是同样的情况。有时快,有时慢。启用了APC缓存。通常我的doctrine查询只需要4-20ms就可以完成,具体取决于页面。
我曾经运行PHP 5.3,但决定升级到5.4,以查看是否有所帮助,但仍然存在同样的问题。我使用最新的稳定版本的nginx。PHP在FPM中运行。服务器正在运行其他网站,没有像这样的问题 - 无论是magento还是symfony 1.4网络应用程序。
服务器是四个双核心,具有32GB的内存,因此我拥有足够的资源。当我发出请求时观察进程,我看不到异常的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"
        }
    }
}

我修复了这个问题,但我不知道是怎么做到的。我认为这可能是一个文件权限问题?但我真的不太确定。这是否有可能呢? - Ghassan Idriss
2
这里的答案对我有用:https://dev59.com/-mcs5IYBdhLWcg3wXi1E#17914570 - TautrimasPajarskas
这篇文章可能会回答以下问题: https://dev59.com/-mcs5IYBdhLWcg3wXi1E - Denes Papp
1
也许你的xdebug分析器已启用?分析会严重拖慢服务器速度。 - Turdaliev Nursultan
1个回答

4
我参考了另一个(相同的)问题中的答案:

Symfony性能问题

我猜你应该将PHP.ini中的这两个参数设置为比默认值高得多的值,即:
realpath_cache_size = 4096k 
realpath_cache_ttl = 7200

1
为什么它被降级了? - Grzegorz Krauze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接