gpt4 book ai didi

azure - 使用 Symfony 的 Microsoft Azure 应用服务的性能问题

转载 作者:行者123 更新时间:2023-12-03 02:13:35 27 4
gpt4 key购买 nike

当我们将 Microsoft Azure 应用服务与 Symfony 应用程序(一个基本的后台应用程序,调用 WS,在数据库中写入一些数据并将其发送到前端应用程序)一起使用时,我们面临性能问题。

为了验证该问题与代码无关,我们在本地和 Microsoft Azure oncloud 虚拟机上尝试使用相同的 ACU 。由于我们的客户政策,我们必须使用应用服务

摘要

  • 本地表现不错

  • VM 上的性能良好

  • 应用服务的性能很差

  • metrics don't show hardware issue

  • 使用 PHP 命令时,性能似乎与磁盘性能和延迟有关(请参阅下面的 symfony 特定命令)

  • 应用服务VS VM/本地在磁盘上写入速度慢1000倍

  • 当我们使用 bin/console 启动命令时,需要 8 秒,而虚拟机/本地则不到 1 秒

我们如何测试性能?

当我们访问前端应用程序时,性能很差,延迟很高。

我们检查了 symfony _profiler、dd 命令和 symfony 特定命令

dd命令

在应用服务上

root@09b68d228779:/home/site# dd if=/dev/zero of=/home/site/wwwroot/test1.img bs=1G count=1 oflag=dsync
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 21.9822 s, 48.8 MB/s

root@09b68d228779:/home/site# dd if=/dev/zero of=/home/site/wwwroot/test1.img bs=512 count=1000 oflag=dsync
1000+0 records in
1000+0 records out
512000 bytes (512 kB, 500 KiB) copied, 31.7151 s, 16.1 kB/s

在 Azure 虚拟机上

user@app:~$ dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 10.1442 s, 106 MB/s
user@app:~$ dd if=/dev/zero of=/tmp/test1.img bs=512 count=1000 oflag=dsync
1000+0 records in
1000+0 records out
512000 bytes (512 kB, 500 KiB) copied, 9.1723 s, 55.8 kB/s

symfony 特定命令

本地

[INFO] Starting benchmark                                                                                               
------------------------------ ----------
Title Duration
------------------------------ ----------
Write inside of project dir 0.3 ms
Write outside of project dir 0.8 ms
Factorials calculation 5.4 ms
------------------------------ ----------
mardi 29 mars 2022, 16:36:59 (UTC+0200)

在应用服务上

Tue Mar 29 14:34:19 UTC 2022
[INFO] Starting benchmark
------------------------------ ----------
Title Duration
------------------------------ ----------
Write inside of project dir 558.5 ms
Write outside of project dir 2.4 ms
Factorials calculation 8.1 ms
------------------------------ ----------
Tue Mar 29 14:34:27 UTC 2022

在 Azure 虚拟机上

Tue Mar 29 14:34:09 UTC 2022
[INFO] Starting benchmark
------------------------------ ----------
Title Duration
------------------------------ ----------
Write inside of project dir 0.4 ms
Write outside of project dir 0.6 ms
Factorials calculation 7.2 ms
------------------------------ ----------
Tue Mar 29 14:34:09 UTC 2022

我们已经尝试过

  • 将应用服务扩展到 P3v2(840ACU、14GB 内存)
  • 将应用服务扩展到 3 个实例
  • 在应用服务上挂载外部磁盘(我们只能使用 CIFS)
  • 联系 Microsoft Azure 支持(经过大量邮件后,Symfony 不受支持)

软件

  • Symfony 5.4.8
  • 我们正在使用以下软件包:
 "require": {
"php": ">=7.4",
"ext-ctype": "*",
"ext-curl": "*",
"ext-iconv": "*",
"ext-json": "*",
"ext-openssl": "*",
"beberlei/doctrineextensions": "^1.3",
"composer/package-versions-deprecated": "1.11.99.2",
"doctrine/annotations": "^1.0",
"doctrine/doctrine-bundle": "^2.4",
"doctrine/doctrine-migrations-bundle": "^3.1",
"doctrine/orm": "^2.9",
"michaeldegroot/doctrine-encrypt-bundle": "^4.0",
"nelmio/cors-bundle": "^2.1",
"phpdocumentor/reflection-docblock": "^5.2",
"phpoffice/phpspreadsheet": "^1.19",
"sensio/framework-extra-bundle": "^6.1",
"symfony/apache-pack": "^1.0",
"symfony/asset": "5.3.*",
"symfony/console": "5.3.*",
"symfony/dotenv": "5.3.*",
"symfony/expression-language": "5.3.*",
"symfony/flex": "^1.3.1",
"symfony/form": "5.3.*",
"symfony/framework-bundle": "5.3.*",
"symfony/http-client": "5.3.*",
"symfony/intl": "5.3.*",
"symfony/mailer": "5.3.*",
"symfony/mime": "5.3.*",
"symfony/monolog-bundle": "^3.1",
"symfony/notifier": "5.3.*",
"symfony/process": "5.3.*",
"symfony/property-access": "5.3.*",
"symfony/property-info": "5.3.*",
"symfony/proxy-manager-bridge": "5.3.*",
"symfony/runtime": "5.3.*",
"symfony/security-bundle": "5.3.*",
"symfony/serializer": "5.3.*",
"symfony/string": "5.3.*",
"symfony/translation": "5.3.*",
"symfony/twig-bundle": "^5.3",
"symfony/validator": "5.3.*",
"symfony/web-link": "5.3.*",
"symfony/yaml": "5.3.*",
"talan/pattern-matching": "^1.1",
"twig/extra-bundle": "^2.12|^3.0",
"twig/twig": "^2.12|^3.0"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.4",
"fzaninotto/faker": "^1.9",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^5.3",
"symfony/css-selector": "^5.3",
"symfony/debug-bundle": "^5.3",
"symfony/maker-bundle": "^1.0",
"symfony/phpunit-bridge": "^5.3",
"symfony/stopwatch": "^5.3",
"symfony/var-dumper": "^5.3",
"symfony/web-profiler-bundle": "^5.3"
},

Linux Web 应用服务(P1v2:1)

  • 运行时堆栈:PHP7.4
  • 操作系统:Linux
  • 使用代码部署
  • 地区:法国中部
  • 生产类型
  • 大小:P1v2:1(210 ACU,3.5GB 内存)

最佳答案

这里发生的事情是应用程序服务基础设施的一部分,正如您提到的,您对磁盘具有高度依赖性。

应用程序服务使用文件共享并将其挂载为网络驱动器,这会增加 I/O 请求的延迟,这是为了提高可靠性,但通常在处理应用程序服务和大量磁盘操作时,速度会变慢与使用虚拟机或本地计算机时相比。

此外,您很可能使用标准 HDD 进行文件共享(无法选择),我建议尝试使用 BYOS (Bring Your Own Storage)和使用 SSD 的高级存储帐户 Storage account overview - Azure Storage | Microsoft Docs

如果这不起作用,容器实例可能是最接近虚拟机的东西,而无需离开 PaaS

关于azure - 使用 Symfony 的 Microsoft Azure 应用服务的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72344556/

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