【问题标题】:Symfony2 - very slow bootstrap on shared hostingSymfony2 - 共享主机上的引导非常慢
【发布时间】:2014-02-11 10:07:45
【问题描述】:

我现在面临一个大问题 - symfony 需要 7-10 秒才能启动。一些研究表明,这是因为 symfony 一开始就包含大量文件。

在我的本地机器上,我可以通过增加 php.ini 中的 realpath_cache_size 设置来修复它,但是在共享主机上这不起作用(因为 open_basedir 限制有效并且 php 在这种情况下禁用了 realpath 缓存)。

现在我被卡住了,因为明显的应用程序在如此巨大的引导延迟下无法使用。 有没有人有这个问题..我该如何解决?

【问题讨论】:

  • 这是否仅在您清理缓存后的第一次或每次请求时发生?您使用的是 DEV 还是 PROD 环境?
  • 这是在每个请求,prod 环境中
  • 首先要检查的是 DEV env 日志文件。我在共享主机上使用 Sf2.0.x 和 Sf2.3.x,网站很少需要 1 秒才能加载。您是否对每个请求都进行了繁重的逻辑处理?
  • 我只是使用新的 symfony 2.4 包进行测试。同样,如果您再次阅读我的问题,我知道问题出在哪里(open_basedir + realpath_cache 问题),我只是不知道如何在共享主机中克服这个问题
  • @PavelDubinin 你是如何发现 Symfony 执行的文件包含的?我也想用我们的设置来检查一下。

标签: performance symfony


【解决方案1】:

有很多方法可以固定 symfony bootstrap。

一些提示:

  • 确保使用“prod”环境(以及生产设置:禁用调试和分析、启用缓存、不太详细的日志),
  • 在高 QPS 下,不要使用默认的 PHP 会话处理程序,它会在用户的会话文件上使用文件锁定,这不允许并行查询(如果您经常使用 Ajax,会受到很大的伤害),
  • 使用文件系统进行缓存可能会很慢(尤其是在共享主机上):将缓存目录放在 tmpfs 挂载点下或覆盖缓存后端以使用文件系统以外的其他内容(请参阅http://nerdpress.org/2012/07/10/caching-data-in-symfony2)。李>

请参阅以下清单,其中涵盖了用于生产的 symfony2 应用程序部署的基础知识: http://www.symfony2-checklist.com/

【讨论】:

  • 使用文件系统可能会很慢请提供解决方案或至少提供建议。
  • 通常,我为我的缓存目录创建一个 tmpfs 挂载点,但您可以覆盖缓存后端并使用例如 memcache。本文将向您展示您可以做什么的示例:nerdpress.org/2012/07/10/caching-data-in-symfony2
  • 我的问题确实是 open_basedir(参见bugs.php.net/bug.php?id=53263)。它不允许缓存realpath,我只是不知道如何修复它
  • @MartinRichard :我建议您将此注释添加到您的答案中。
  • @PavelDubinin Symfony 将其核心功能“打包”在一个“引导程序”文件中,您确定启用了此功能吗?你知道在哪里调用 realpath() 吗?是由 PHP(由于 open_basedir 特性)还是由类加载器执行的?在后一种情况下,您应该能够编写解决方法或使用替代类加载器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
相关资源
最近更新 更多