LoginSignup
5
5

More than 5 years have passed since last update.

Azure WebAppsのパフォーマンステスト

Last updated at Posted at 2016-03-14

今んとこの気持ち

IOがとりあえずダメっぽい。
ログファイルへの出力を全くしないようにしたら若干改善したけど、どうやってログ取るのっていう問題が当然出てきて未解決です。

前段

AzureのWebAppsでアプリケーションを構築しているところですが、なんだか微妙に遅くて困っています。
構成としてはWebApps(PHP)+SQL Serverです。SQL Serverがマネージドサービスだったので…。
基本的なところは既に動いています。
しかし体感的な話になり申し訳ないところですが、レスポンスタイムが想定より遅く、安定しません。

とりあえず色々計ってみています。いろんな理由で検証環境とかプランがブレるのはご容赦ください…。

おおまかなベンチマーク

php-framework-benchmarkというものがあります。

PHPの各フレームワークのHello worldにabでアクセス、スループットを集計するというベンチマークです。フレームワークの超基本的なスループットを比べるためのものですが、とりあえず目についたので実行してみました。

結果が雑ですが……、まずAzure。

Azure (P1)

framework requests per second relative peak memory relative
fuel-2.0-dev 0.09 1.0 0.87 1.0
laravel-5.1 0.23 2.6 1.63 1.9
fuel-2.0-dev 10.35 1.0 0.87 1.0
laravel-5.1 15.73 1.5 1.63 1.9
fuel-2.0-dev 3.77 2.7 0.87 1.0
laravel-5.1 1.40 1.0 1.62 1.9
fuel-2.0-dev 10.72 0.0 0.87 1.0
laravel-5.1 0.00 0.0 1.63 1.9
fuel-2.0-dev 10.00 1.6 0.87 1.0
laravel-5.1 6.40 1.0 1.63 1.9
fuel-2.0-dev 10.88 1.0 0.87 1.0
laravel-5.1 17.57 1.6 1.63 1.9
fuel-2.0-dev 9.62 1.0 0.87 1.0
laravel-5.1 29.46 3.1 1.63 1.9
fuel-2.0-dev 10.61 1.0 0.87 1.0
laravel-5.1 11.64 1.1 1.62 1.9
fuel-2.0-dev 11.33 1.0 0.87 1.0
laravel-5.1 38.12 3.4 1.63 1.9
fuel-2.0-dev 9.61 1.0 0.87 1.0
laravel-5.1 40.25 4.2 1.63 1.9

インスタンスはP1を1台。ロジックが入ってないとはいえ瞬間最大40req/sが出たのは意外でしたが、結果のばらつきがとても大きい。途中で全部タイムアウトしたりします。

タイムアウトの回数も数えるべきだった(TODO)

次、自前のMBP。

MBP (Core-i5 8GB SSD256GB)

framework requests per second relative peak memory relative
fuel-2.0-dev 34.99 1.7 0.00 nan
laravel-5.1 21.04 1.0 0.00 nan
fuel-2.0-dev 32.83 1.6 0.00 nan
laravel-5.1 20.86 1.0 0.00 nan
fuel-2.0-dev 35.09 1.6 0.00 nan
laravel-5.1 21.51 1.0 0.00 nan
fuel-2.0-dev 35.10 1.6 0.00 nan
laravel-5.1 21.46 1.0 0.00 nan
fuel-2.0-dev 36.61 1.7 0.00 nan
laravel-5.1 20.96 1.0 0.00 nan
fuel-2.0-dev 35.91 1.7 0.00 nan
laravel-5.1 21.62 1.0 0.00 nan
fuel-2.0-dev 36.69 1.7 0.00 nan
laravel-5.1 21.32 1.0 0.00 nan
fuel-2.0-dev 37.32 1.8 0.00 nan
laravel-5.1 21.09 1.0 0.00 nan
fuel-2.0-dev 32.64 1.5 0.00 nan
laravel-5.1 21.75 1.0 0.00 nan
fuel-2.0-dev 32.72 1.5 0.00 nan
laravel-5.1 21.92 1.0 0.00 nan

ビルトインサーバですが安定。タイムアウトもなし。メモリが取れてないのは何か拡張が足りないからっぽい。

次、Windowsが怪しいのかと思い、Windows機がないのでさくらで借りました。ディスクは早いが他は貧弱。

さくらのVPS for Windows(最安プラン 1core 768MB SSD30G)

framework requests per second relative peak memory relative
fuel-2.0-dev 13.67 1.0 0.00 0.0
laravel-5.1 14.37 1.1 6.62 0.0
fuel-2.0-dev 15.51 1.0 0.00 0.0
laravel-5.1 14.92 1.0 6.62 0.0
fuel-2.0-dev 15.51 1.0 0.00 0.0
laravel-5.1 15.00 1.0 6.62 0.0
fuel-2.0-dev 15.33 1.0 0.00 0.0
laravel-5.1 15.67 1.0 6.62 0.0
fuel-2.0-dev 15.75 1.0 0.00 0.0
laravel-5.1 15.59 1.0 6.62 0.0
fuel-2.0-dev 15.75 1.0 0.00 0.0
laravel-5.1 15.84 1.0 6.62 0.0
fuel-2.0-dev 15.92 1.0 0.00 0.0
laravel-5.1 15.51 1.0 6.62 0.0
fuel-2.0-dev 15.92 1.0 0.00 0.0
laravel-5.1 15.59 1.0 6.62 0.0
fuel-2.0-dev 15.75 1.1 0.00 0.0
laravel-5.1 14.59 1.0 6.62 0.0
fuel-2.0-dev 16.00 1.0 0.00 0.0
laravel-5.1 15.43 1.0 6.62 0.0

ビルトインサーバかつスペックが貧弱ですが、ほぼほぼ安定。

AzureのWebAppsは、実際はIIS+php-fpmという構成です。IISと相性が悪いのかも?(TODO)あとFastCGIのキューに限度があり、50-100を超えると一律エラーになるようなので、そこも考慮しないといけない気がします(TODO)

ネットワーク

pingが通らないので、curlで計測する。静的ファイルを取得するレスポンスタイムを計ってみます。
AzureはS2、とあるIaaS(CentOS)です。

image.png

100回測った時のヒストグラムです。

横軸がレスポンスタイム、縦軸はそのレスポンスタイムの回数なので、Azureのほうが良好ですし、バラつきも少ないです。

ネットワークまわりが原因である可能性は低そうです。

IO

Azure WebAppsはディスク付きのIaaSです。インスタンスが複数になっても大丈夫なように、ディスク(Dドライブ)が共有されています。
噂によるとSMB共有だそうです。それは遅いのでは…ということで測りました。

超簡素なベンチマークです。

MBP

image

安定。

Windowsノート

image

2.5インチHDDの割に健闘していると思います。

さくらのVPS for Windows

image

RWの点がバラけ気味ですが、SSD速い。

Azure WebApps(P1)

image

遅い…。数十バイトのファイルの書き込みに6秒、読み込みが5秒、削除が12秒だとさすがにどうしようもないのでは…。

継続中…。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5