我们正在将 Symfony 3.4 应用程序 (LAMP w/ opcache/php-fpm) 升级到 flex(按照https://symfony.com/doc/current/setup/flex.html)。在负载测试中,我们发现 CPU 使用率有所增加,尤其是系统 CPU。
我们在分析中注意到的变化:
- CPU 中断增加。
perf top
mutex_spin_on_owner
显示和内核调用中花费的 CPU 时间更多osq_lock
。研究表明,这表明我们在访问某些共享资源时遇到了瓶颈。sar -n SOCK
显示正在使用更多 UDP 端口,并且tcpdump
输出确实显示发送的 DNS 查找增加了约十倍。额外的查找似乎包括客户端 IP 的名称服务器查找;但是,我们没有添加任何相关日志记录或代码来执行此操作。我们正在比较相同的代码库,但升级到 flex 所需的更改除外(当然,这些更改很重要,但主要是配置更改)。
我们认为被排除的事情:
- 内存交换 - 这似乎并没有通过改变
vmstat
。 - 我们通过(、、标志)对
php-fpm
、、、的io、cpu 和 mem 进行了分析,认为没有发现任何重大问题。同样,的屏幕录像mysqld
也没有显示任何可察觉的问题/差异。redis-server
httpd
pidstat
-r
-u
-d
top
- 我们正在使用 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
如果可以的话,我们会更新具体原因。