2015-07-10 32 views
3

在使用Symfony2探查器時,我努力找出404的原因。我正在使用Symfony 2.3 LTS。爲什麼Symfony2探查器在使用MemcachedProfilerStorage時拋出404s?

我在我們的開發環境中啓用了Profiler,並且該問題可以在多個開發人員機器上再現。我們的探查配置爲:

framework: 
    profiler: 
     dsn: "memcached://localhost:11211" 
     enabled: true 
     lifetime: 86400 # Keep profiles for a day at most 

在一些 - 但不是全部 - 頁我們如下看到錯誤:

**The page at https://local.dev says:** 

An error occurred while loading the web debug toolbar (404: Not Found). 

Do you want to open the profiler? 

OK/Cancel 

有用於https://local.dev/_wdt/<token>和點擊5個404請求取消把我們帶到「令牌沒有發現」頁面,在https://local.dev/_profiler/<token>

我試着通過代碼加強,到目前爲止,已經確定:

但是,之後發出此調用,原始令牌的telnet請求返回爲空。此調用的關鍵不同於原始標記,因此不會被覆蓋。

這反過來觸發了我看到客戶端的404錯誤。

一些其他可能有用的信息:

  • 工具欄上做一些網頁的工作。這是我們的管理界面中有404個工具欄錯誤的頁面。
  • 我們使用ESI並使用Twig。
  • 我們打電話到{% render(controller("ABundle:AController:anAction", {some:params})) %}
  • 消除從我們的嫩枝一個模板渲染方法一個解決問題。
  • 恢復該渲染方法並註釋掉另一個方法也將解決該問題。暗示有太多的孩子或太多的數據(或類似的東西)。

什麼可能導致此問題?我將如何識別修補程序?

另外,使用FileProfiler可以正常工作。

謝謝你的幫助!

+0

我猜你已經檢查過防火牆/路由yml文件,如果他們配置正確? (404錯誤可能與'routing_dev.yml'中的缺失/註釋路由有關) – tftd

+0

探查器在某些頁面上工作,所以路由必須廣泛地工作。我進一步更新了這個問題,以包含該片段和一些額外的調查,這些調查表明Twig中的渲染方法對此問題有所貢獻。 – edhgoose

回答

2

我已經發現了這個解決方案後,很多頭撞。

看來,由於我們在我們的模板中使用了許多渲染,因此正在收集大量探查器數據。

此分析器數據正被推入memcached。而且,由於其中有很多,其他數據正在被驅逐。我通過運行發現這個:

echo stats | nc 127.0.0.1 11211 | grep evic 

每次我加載一個網頁,我看到了evicted_unfectedevictions攀登。

解決方案是將memcached內存池的大小從標準64MB增加到256MB(或任何其他大小)。

這是通過在運行時傳遞-m選項來完成的。

+0

它不會跨越我的想法,這可能是問題...感謝分享! :) – tftd

相關問題