gpt4 book ai didi

php - 为什么 PHP Symfony sfSessionStorage::initialize 有时需要很长时间?

转载 作者:可可西里 更新时间:2023-11-01 14:01:16 25 4
gpt4 key购买 nike

我们在 symfony 1.4 和 symfony 2 中都有不同的 PHP 应用程序,并且所有这些应用程序在某些时候都有请求,其中 sfSessionStorage::initialize 需要非常非常长的时间。

我说的是加载分钟。以这个 newrelic trace 为例:

enter image description here

在这里您可以看到 sfSessionStorage::initialize 花费了 185 秒。我们已经调试了好几天了,到目前为止还没有成功。我们查看了 GC 设置,尝试将 session 存储在文件系统中的位置挂载到 RamDisk 中,但没有任何效果。

这可能是什么原因造成的?你遇到过同样的问题吗?非常感谢任何帮助,谢谢!

最佳答案

strace可能会阐明正在发生的事情。

假设您无法使用 cli 重现该问题,我建议将进程数限制为 1(mod_php 的 MaxRequestWorkers 和 php_fpm 的 max_children),将 strace 附加到进程并检查它挂起的位置。

例如在 php_fpm 案例中:

  • 打开/etc/php5/fpm/pool.d/www.conf并确保设置

    pm = static  
    pm.max_children = 1
  • 重启 php_fpm 和 nginx

  • grep aux | php 找出进程id
  • sudo strace -p 后跟进程id
  • 尝试重现问题

如果它在一次系统调用中停留几分钟,您会在 strace 的标准输出中清楚地看到阻止程序。如果没有单一的阻塞程序,而是一长串重复的系统调用,您可能需要将其记录到一个文件中,稍后再进行分析。例如。 sudo strace -p {pid} | tee/tmp/strace.log.

如果单个 worker 无法重现问题,请尝试增加 worker 的数量,并捕获所有进程的 strace。

关于php - 为什么 PHP Symfony sfSessionStorage::initialize 有时需要很长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33702497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com