代码之家  ›  专栏  ›  技术社区  ›  develth

symfony 3.4 FirewallListener速度慢/阻塞

  •  1
  • develth  · 技术社区  · 7 年前

    当我向一个有大量数据要加载的“巨大”页面发出请求,并向一个“正常”内容页面发出第二个请求时,正常页面将被阻止,直到“巨大”页面加载完毕。

    我激活了探查器,并认识到FirewallListener是阻塞元素)。

    探查器屏幕截图(加载巨大,切换选项卡-加载正常) 巨大的 Huge Page Load

    典型的 Normal Page Load

    加载“巨大”页面时,我在cli上执行了一个mysql php请求,并进行了一些时间测量:

    Connection took 9.9890232086182 ms
    Query took 3.3938884735107 ms
    

    所以这不是阻塞。

    有没有办法解决这个问题?

    设置:

    • php-fpm7.2
    • nginx公司
    • symfony3.4
    3 回复  |  直到 7 年前
        1
  •  5
  •   Flying    7 年前

    它已被PHP会话阻止。

    您不能服务于需要访问相同会话id的页面。

    虽然在慢速页面上关闭/提供/释放会话后,可以在同一会话上提供另一个页面。在慢速页面上,只需呼叫 Session::save() 尽快在您的控制器上。这将释放会话。请考虑保存会话后所做的一切不会存储在会话中。

        2
  •  1
  •   Łukasz D. Tulikowski    7 年前

    防火墙需要这么长时间的原因是 已启用调试 .

    在debug中,监听器都是用调试监听器包装的。 正在分析和记录防火墙中的所有信息 .

    尝试在禁用Symfony调试的情况下运行相同的请求。

        3
  •  1
  •   johanv    6 年前

    我们也有类似的问题。在短时间内向服务器发送两个连续请求时,服务器变得非常慢。我启用了探查器栏,ContextListener花费了很多时间 screenshot of the profiler information

    问题是服务器上的文件服务器访问速度非常慢,会话信息存储在文件系统中,这是symfony的默认设置。

    我已将我的应用程序配置为使用 PdoSessionHandler ,问题就解决了。