るいすときのこの物語

オタクエンジニアの雑記

CloudFlareのSSLオプションは遅いのか


CloudFlareって無料で使えて機能も多くてよく使っています。 目玉な機能の1つにSSLが無料で使える機能がありますが ベンチマークを取る機会があったので記事にでもしようと思います。

 

CloudFlare -> Crypto SSL

CloudflareのSSLオプションには3種類あります。

Flexible SSL

CloudFlare - Origin server 間は HTTP で通信し、 エンドユーザーと CloudFlare 間は HTTPS で通信する

 

Full SSL

エンドユーザー - CloudFlare 間だけでなく、 CloudFlare - Origin server 間も HTTPS で通信する(オレオレ証明書でOK)

 

Full SSL (strict)

Full SSL と同様 オレオレ証明書ではなく認証局から発行されたきちんとした証明書が必要

 

 

ベンチマーク

今回はFull(strict)以外で比較を行います。

DBと連携しているAPIサーバーに対して、 インターネットの向こう側からGo言語で書かれたheyというツールを使って ベンチマークを行います。

CloudFlare の Cache 機能は全て無効の状態です。

https://github.com/rakyll/hey

$ hey -n 6000 -c 600 -q 10 -m POST -D ./a.json -T "application/json" -h2 https:// 同時接続数600 &トータル6000リクエスト & 10秒以内

Requests/secResponse timeの平均を見ていきたいと思います。

 

HTTP + CloudFlare(Proxied)

Summary:
  Total:        5.0279 secs
  Slowest:      3.2032 secs
  Fastest:      0.0176 secs
  Average:      0.4119 secs
  Requests/sec: 1193.3303

Status code distribution:
  [200] 6000 responses

Response time histogram:
  0.018 [1]     |
  0.336 [2239]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.655 [3410]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.973 [25]    |
  1.292 [1]     |
  1.610 [179]   |∎∎
  1.929 [123]   |∎
  2.248 [9]     |
  2.566 [0]     |
  2.885 [8]     |
  3.203 [5]     |

Requests/sec : 1193.3303 Average: 0.4119 secs

 

HTTP (No Proxied)

Summary:
  Total:        4.7277 secs
  Slowest:      2.7705 secs
  Fastest:      0.0187 secs
  Average:      0.3751 secs
  Requests/sec: 1269.1202

Status code distribution:
  [200] 6000 responses

Response time histogram:
  0.019 [1]     |
  0.294 [2644]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.569 [2922]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.844 [97]    |∎
  1.119 [0]     |
  1.395 [126]   |∎∎
  1.670 [128]   |∎∎
  1.945 [71]    |∎
  2.220 [5]     |
  2.495 [0]     |
  2.770 [6]     |

Requests/sec : 1269.1202 Average : 0.3751 secs

 

HTTPS + CloudFlare(Flexible)

Summary:
  Total:        5.3223 secs
  Slowest:      2.3040 secs
  Fastest:      0.0183 secs
  Average:      0.4390 secs
  Requests/sec: 1127.3389

Status code distribution:
  [200] 6000 responses

Response time histogram:
  0.018 [1]     |
  0.247 [1317]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.475 [2479]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.704 [1866]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.933 [20]    |
  1.161 [1]     |
  1.390 [14]    |
  1.618 [105]   |∎∎
  1.847 [120]   |∎∎
  2.075 [76]    |∎
  2.304 [1]     |

Requests/sec : 1127.3389 Average : 0.4390 secs

 

HTTPS + CloudFlare(Full)

Summary:
  Total:        5.1285 secs
  Slowest:      4.0366 secs
  Fastest:      0.0187 secs
  Average:      0.3988 secs
  Requests/sec: 1169.9248

Status code distribution:
  [200] 6000 responses

Response time histogram:
  0.019 [1]     |
  0.421 [4560]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.822 [1125]  |∎∎∎∎∎∎∎∎∎∎
  1.224 [0]     |
  1.626 [148]   |∎
  2.028 [125]   |∎
  2.429 [2]     |
  2.831 [18]    |
  3.233 [11]    |
  3.635 [7]     |
  4.037 [3]     |

Requests/sec : 1169.9248 Average : 0.3988 secs

 

HTTPS (No Proxied)

Summary:
  Total:        4.9323 secs
  Slowest:      3.1960 secs
  Fastest:      0.0194 secs
  Average:      0.4015 secs
  Requests/sec: 1216.4785

Status code distribution:
  [200] 6000 responses

Response time histogram:
  0.019 [1]     |
  0.337 [2792]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.655 [2857]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.972 [34]    |
  1.290 [1]     |
  1.608 [104]   |∎
  1.925 [183]   |∎∎∎
  2.243 [24]    |
  2.561 [0]     |
  2.878 [0]     |
  3.196 [4]     |

Requests/sec : 1216.4785 Average : 0.4015 secs

 

 まとめ

CloudFlareを通さない方がレスポンスタイムも Requests/sec も良い結果ではあるが 言ってしまえばほぼ誤差の範囲

今回は対象のサーバーがAPIサーバーだったのでアレですがこれがWebサイトだったりしたら CloudFlareを通したほうが絶対に良いでしょう。こっちでキャッシュを持つよりCloudFlareに丸投げしたほうが気が楽ですし。

何よりオリジンサーバーのグローバルIPを隠せるのは大きいので 特にデメリットが見つからなければ CloudFlare を使うと良いのかなと思います。

しかし無料ってのがすごいな。マネタイズの仕組みを知りたい。