簡體   English   中英

Symfony2防火牆需要很長時間

[英]Symfony2 firewall takes ages

我有一個問題Symfony2防火牆組件在一些請求上花了很多年。

我注意到它主要發生在AJAX請求期間,非常具體的 - 當我在學說中使用LIKE%..%語句搜索實體時(不確定它是否重要,但這是我注意到的;))。

稍晚調用相同的URL(1或2秒后)會導致“正常”的防火牆處理時間。

我沒有使用任何外部數據源進行身份驗證,所有內容都存儲在PostgreSQL中。

請查看以下時間表:

時間線

有沒有辦法直接調試防火牆?

我的配置如下所示:

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:
        entity: { class: Webility\Bundle\AppUserBundle\Entity\User, property: username }

encoders:
    Webility\Bundle\AppUserBundle\Entity\User:
        algorithm:          sha256
        iterations:         3
        encode_as_base64:   false

acl:
    connection: default

我正在使用Symfony\\SecurityBundleJMSSecurityExtraBundle

我有同樣的問題,想與你們分享解決方案。

服務器響應時間增加

由Symfony \\ Component \\ Security \\ Http \\ Firewall~107406 ms引起的問題

申請時間表

解;

在我們的例子中,問題是我們在php.ini文件中使用的會話處理程序。

以前的配置;

session.save_handler = files

新配置;

;session.save_handler = files

session.save_handler = memcached
session.save_path = "127.0.0.1:11212"

我將會話處理程序更改為memcached。 由於我已經使用了memcached,我需要第二個memcached實例,或者當我實現memcached監聽的其他端口時解決了這個問題;

要運行memcached來監聽兩個端口,我編輯memcached.conf

以前的配置;

-p 11211
-l 127.0.0.1

新配置

#-p 11211
#-l 127.0.0.1

-l 127.0.0.1:11211
-l 127.0.0.1:11212

並且只是重新啟動memcached實例,memcached開始在同一個實例上偵聽兩個端口。

service memcached restart

要驗證memcached是否偵聽並響應新端口,您可以運行telnet命令;

telnet 127.0.0.1 11211
telnet 127.0.0.1 11212

預期產量是;

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

結果是應用非常快;

最終申請時間表

我希望這個解決方案可以幫到你。

嘗試使用其他會話處理程序。 我的Vagrant盒子里有同樣的問題。 不知道是什么造成的。 有關詳細信息,請參見http://ctors.net/2014/04/21/symfony_slow_in_vagrant

這是相當不尋常的行為(除非你做某事,嗯......不尋常;)。

嘗試使用其中一個PHP分析器來查看正在發生的事情。 我可以推薦XHProfXHProf GUI 它易於設置和使用。

我只是猜測,但問題可能與您提到的數據庫查詢有關。 檢查查詢中使用的字段是否設置了適當的索引。

編輯:我偶然發現了從Symfony博客鏈接的這篇文章: http//12wiki.blogspot.com.es/2012/11/why-does-symfony-2-firewall-take-so.html

這似乎是一個DNS問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM