[英]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\\SecurityBundle
和JMSSecurityExtraBundle
。
我有同樣的問題,想與你們分享解決方案。
由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分析器來查看正在發生的事情。 我可以推薦XHProf和XHProf 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.