【发布时间】:2022-06-22 12:21:13
【问题描述】:
当我们将 Microsoft Azure App 服务与 Symfony 应用程序(一个基本的后台应用程序,调用 WS,在 DB 中写入一些数据并将其发送到前台应用程序)一起使用时,我们遇到了性能问题。
为了验证该问题与代码无关,我们尝试在本地和 Microsoft Azure oncloud 虚拟机上使用相同的 ACU。 由于我们的客户政策,我们必须使用应用服务
总结
-
本地表现不错
-
虚拟机性能不错
-
应用服务表现不佳
-
性能似乎与使用 PHP 命令时的磁盘性能和延迟有关(参见下面的 symfony 特定命令)
-
在应用服务 VS VM/local 上写入磁盘要慢 1000 倍
-
当我们使用 bin/console 启动命令时,它需要 8 秒 VS 小于 1 用于 VM/local
我们如何测试性能?
当我们访问前端应用时,性能很差,延迟很高。
我们检查了 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 内存)
【问题讨论】:
-
我建议您使用诸如 blackfire 之类的分析工具来查看您的时间都花在了哪里
-
我不知道天蓝色,但看起来你的延迟可能与网络有关(网络安装的 symfony 目录)?
-
您写入的项目目录是应用服务的一部分吗?您可以查看应用服务计划的文件系统存储刀片中描述的内容吗?根据 SKU,吞吐量是有限的......
标签: azure performance symfony azure-web-app-service