升级到 Symfony flex 后 CPU 中断增加,性能下降

升级到 Symfony flex 后 CPU 中断增加,性能下降

我们正在将 Symfony 3.4 应用程序 (LAMP w/ opcache/php-fpm) 升级到 flex(按照https://symfony.com/doc/current/setup/flex.html)。在负载测试中,我们发现 CPU 使用率有所增加,尤其是系统 CPU。

我们在分析中注意到的变化:

  • CPU 中断增加。
  • perf topmutex_spin_on_owner显示和内核调用中花费的 CPU 时间更多osq_lock。研究表明,这表明我们在访问某些共享资源时遇到了瓶颈。
  • sar -n SOCK显示正在使用更多 UDP 端口,并且tcpdump输出确实显示发送的 DNS 查找增加了约十倍。额外的查找似乎包括客户端 IP 的名称服务器查找;但是,我们没有添加任何相关日志记录或代码来执行此操作。我们正在比较相同的代码库,但升级到 flex 所需的更改除外(当然,这些更改很重要,但主要是配置更改)。

我们认为被排除的事情:

  • 内存交换 - 这似乎并没有通过改变vmstat
  • 我们通过(、、标志)对php-fpm、、、的io、cpu 和 mem 进行了分析,认为没有发现任何重大问题。同样,的屏幕录像mysqld也没有显示任何可察觉的问题/差异。redis-serverhttpdpidstat-r-u-dtop
  • 我们正在使用 CDN 来处理静态资产。我们已开始破坏缓存的图像,但已确认这可以按预期运行(我们的服务器根本没有处理许多资产请求)。
  • 我们使用mariadb持久连接。已确认连接数没有变化,因此不要认为我们正在等待数据库访问。

因此,寻找关于我们可能配置错误的想法,或者如何追踪启动这些额外 DNS 查找的原因。

答案1

嗯,我们不是 100% 确定为什么但是,执行以下操作可以为我们解决问题:删除symfony/web-link软件包安装,并删除/注释preload配置webpack_encore.yaml

webpack_encore:
    ...
    # preload all rendered script and link tags automatically via the http2 Link
    # header
    preload: true

如果可以的话,我们会更新具体原因。

相关内容