相关疑难解决方法(0)

Symfony 2性能优化

我们正在寻找一个可以在未来使用的PHP框架,目前正在使用Symfony 2进行测试.为此,我们重新设计了API并将其作为Symfony中的捆绑包实现.事实证明,Symfony似乎非常慢 - 实际上远比我们旧的(甚至没有精心设计的)系统慢得多.

我们尝试通过缓存字节代码来优化性能(使用APC).虽然我们已经注意到性能的巨大提升(之前:加载API约3秒;之后:平均0.6秒(比没有 APC 的旧系统慢0.5秒)),我们有点兴奋 - 但仍然对于从一个几乎空的数据库中获取一个结果这样的简单任务的高加载时间,我并不十分满意.

我不知道,但我可以想象这是由于Symfony自动加载所有类,即使特定包不需要.

现在,在我们深入研究六个Symfony之前,我们想要寻找进一步的优化,可能是一种在特定包中排除不需要的组件的方法,因为我个人认为这会产生很大的不同.

我要感谢任何关于如何进一步提高性能的想法,使用Symfony体验报告或其他任何可能对我们寻找框架有帮助的事情.

编辑:

有关测试环境的一些信息:

  • 操作系统:Ubuntu 12.04.4 LTS(GNU/Linux 3.8.0-38-generic x86_64)
  • Apache版本:Apache/2.2.22(Ubuntu)
  • PHP版本:5.3.10-1ubuntu3.13
  • 相当多的PHP扩展:apc

此外,所有测试都在我们系统的本地副本上完成,因此可以排除可能的网络问题.

php optimization performance frameworks symfony

9
推荐指数
1
解决办法
6764
查看次数

Symfony2防火墙需要很长时间

我有一个问题Symfony2防火墙组件在一些请求上花了很多年.

我注意到,它在AJAX请求,和非常具体的人主要发生 - 当我使用像学说%..%语句搜索一个实体(不知道它的问题,但是这就是我注意到;)).

稍晚调用相同的URL(1或2秒后)会导致"正常"的防火墙处理时间.

我没有使用任何外部数据源进行身份验证,所有内容都存储在PostgreSQL中.

请查看以下时间表:

时间表http://f.cl.ly/items/1a2Y0T062E0H2Z3t0g27/Zrzut%20ekranu%202012-11-19%20o%2018.26.11.png

有没有办法直接调试防火墙?

我的配置如下所示:

security:
firewalls:
    admin_area:
        provider: db_users
        pattern: ^/admin
        anonymous: ~
        form_login:
          login_path: /admin/login
          check_path: /admin/login-check
        logout: 
          path: /admin/logout
          target: /admin
        switch_user: { role: ROLE_SUPERADMIN, parameter: _become_user }

    secured_area:
        pattern:    ~
        anonymous: ~
        http_basic:
            realm: "Secured Demo Area"

access_control:
    - { path: ^/admin/clip-manager/clip/encode/*, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
    - { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/login-check, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin, roles: [ROLE_ADMIN_LOGIN, ADMIN_AREA] }

providers:
    db_users: …
Run Code Online (Sandbox Code Playgroud)

php symfony

6
推荐指数
2
解决办法
4372
查看次数

Symfony2有时慢速开发和生产响应时间

我一直致力于一个新的工作项目,并且遇到了一个奇怪的问题,我的应用程序需要很长时间才能在dev和prod中返回响应.但有时它会非常快地返回响应.我在这里读了一些关于可能原因的帖子,但没有一个能解决我的问题.

起初我以为是因为我提出了一些子请求,所以我删除了这些请求,但仍然遇到了同样的问题.

DEV的平均请求仅在20-30MB之间.我正在尝试使用分析器来帮助我弄清楚它可能来自何处,但是每个请求它都会显示请求的最长部分是不同的区域.例如,在一个请求中,最长的部分是控制器,在另一个请求到同一页面的时候是模板监听器,另一个是安全/防火墙监听器.

例如,我主页上的快速请求大约需要116毫秒.我等了一会儿,刷新了它需要9467毫秒,甚至我看到它需要30,000 + ms.

虽然我可以在开发模式下生活有点慢,但是prod正在做同样的事情.有时快,有时慢.APC缓存已启用.通常,我的学说查询只需要4-20毫秒即可完成,具体取决于页面.

我正在运行PHP 5.3,但决定升级到5.4,看看是否有帮助,仍然是同样的问题.我正在使用最新的稳定构建的nginx.FPM中的PHP.服务器运行其他网站没有问题 - magento和symfony 1.4 Web应用程序没有这样的问题.

服务器是一个四核双核,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" : …
Run Code Online (Sandbox Code Playgroud)

symfony symfony-2.2

6
推荐指数
1
解决办法
6549
查看次数