中国にはグレートファイアーウォール(=金盾)があるため、地理的な距離以上に中国外とのインターネット通信が遅いらしい。どの程度遅いのか、AWSとAlibaba Cloudで検証してみた。
先に結論
たしかに、距離が倍以上遠いシンガポールよりも、中国(上海)の方がsshとhttpの両方で遅いという結果になった。日本のサービスを中国展開する場合は、中国内のサーバーを利用しないとだいぶつらそう。
from | to | ssh(max) | http(avg) | 都内からの距離(昇順) |
---|---|---|---|---|
都内 | AWS 東京リージョン | 250ms | 22ms | 0km? |
都内 | Alibaba Cloud 上海リージョン | 4400ms | 815ms | 1756km? |
都内 | AWS 中国(寧夏)リージョン | 計測できず | 計測できず | 2986km? |
都内 | AWS シンガポールリージョン | 1040ms | 156ms | 5311km? |
AWS 中国(寧夏)リージョンについては、すぐに使うことができず計測を断念。
※それぞれの数値は目安程度にお考えください。
その他、気になったけど今回は計測していない点
- 暗号化がある場合とない場合で速度に顕著な差が出るとの説あり
- httpとhttpsで試せば分かるかもしれない。今回は挑戦せず
- アメリカ西海岸の方が日本よりも早くなるらしい
- 今回は挑戦せず
- 中国内でサービス展開するにはソースコードの開示が必要?
- 実際は対象製品に制限があるらしいが、対岸の火事というほど縁のない話ではない模様
なぜ中国内から外へのアクセスも計測しなかったのか
単に面倒だったからです…!
Alibaba Cloudとは
中国におけるAWSのようなサービス。各サービス名はAWSと非常に似ており(けど少し違う)とてもややこしい。他には、Tencent Cloudというサービスもある模様。
計測に使ったコマンドなど
OSは、Aliyun LinuxというAmazon LinuxのAlibabaバージョンのようなものを利用しました。Redhat系のようです。
sshの場合
for ((i=0; i<10; i++))
do /usr/bin/time ssh server_name "echo 'hello' >/dev/null"
done
httpの場合
計測には、Nginxのデフォルトページを使いました。
ab -n 10 -c 1 [URL] # 1並列, 10リクエスト
都内からAWS 東京リージョンへのアクセス
比較対象として、まずは都内の自宅からAWS 東京リージョンへのアクセスを計測してみる。同じ地域へのアクセスなので非常に速いはず。
- from
- 都内
- to
- AWS Asia Pacific (Tokyo)
sshの場合
1回のssh接続とコマンド実行で220-250msほどの時間がかかっている。
$ for ((i=0 ; i<10 ; i++)); do /usr/bin/time ssh tokyo_server "echo 'hello' >/dev/null"; done
0.23 real 0.02 user 0.00 sys
0.23 real 0.02 user 0.00 sys
0.24 real 0.02 user 0.00 sys
0.23 real 0.02 user 0.00 sys
0.23 real 0.02 user 0.00 sys
0.24 real 0.02 user 0.00 sys
0.25 real 0.02 user 0.00 sys
0.22 real 0.02 user 0.00 sys
0.22 real 0.02 user 0.00 sys
0.23 real 0.02 user 0.00 sys
httpの場合
22ms/reqくらいの速度が出ている。
$ ab -n 10 -c 1 http://tokyo_server/
Concurrency Level: 1
Time taken for tests: 0.228 seconds
Complete requests: 10
Failed requests: 0
Total transferred: 40040 bytes
HTML transferred: 37700 bytes
Requests per second: 43.82 [#/sec] (mean)
Time per request: 22.823 [ms] (mean)
Time per request: 22.823 [ms] (mean, across all concurrent requests)
Transfer rate: 171.32 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 9 11 1.9 11 14
Processing: 10 12 1.8 12 14
Waiting: 9 12 1.7 11 14
Total: 19 23 3.3 22 28
日本の自宅からAlibaba Cloud 上海リージョンへのアクセス
日本と中国(上海)は地理的にシンガポールよりも近いが、金盾があるためシンガポールよりも遅くなる見込み。
- from
- 都内
- to
- Alibaba Cloud China East 2 (Shanghai)
sshの場合
1回のssh接続で3秒以上の時間がかかっている。サーバーにログインしてみると、タイムラグがありすぎてかなりつらい状況。
$ for ((i=0; i<10; i++)); do /usr/bin/time ssh shanghai_server "echo 'hello' >/dev/null"; done
4.35 real 0.02 user 0.00 sys
4.40 real 0.02 user 0.00 sys
3.47 real 0.02 user 0.00 sys
3.47 real 0.02 user 0.00 sys
3.27 real 0.02 user 0.00 sys
3.78 real 0.02 user 0.00 sys
3.58 real 0.02 user 0.00 sys
3.47 real 0.02 user 0.00 sys
3.99 real 0.02 user 0.00 sys
3.37 real 0.02 user 0.00 sys
httpの場合
815ms/reqくらいの速度が出ている。東京リージョンに対して同じことをした場合に比べてとても遅い。サーバーのデフォルトページを表示するだけでこの速度だと、リアルタイム性を求められるサービスはだいぶ厳しそう。
※中国内で80番ポートの開いたWebサーバーを立てるには許可がいるため、適当なポートで実験しています。
$ ab -n 10 -c 1 http://shanghai_server:34529/
Concurrency Level: 1
Time taken for tests: 8.152 seconds
Complete requests: 10
Failed requests: 0
Non-2xx responses: 10
Total transferred: 5530 bytes
HTML transferred: 2840 bytes
Requests per second: 1.23 [#/sec] (mean)
Time per request: 815.224 [ms] (mean)
Time per request: 815.224 [ms] (mean, across all concurrent requests)
Transfer rate: 0.66 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 249 297 21.0 307 308
Processing: 307 518 645.9 308 2356
Waiting: 307 518 645.9 307 2356
Total: 574 815 649.2 614 2662
都内からAWS シンガポールリージョンへのアクセス
日本からの距離が上海の倍以上遠いため、距離の差が速度にそのまま反映されるのなら、上海よりもだいぶ遅くなるはず。しかし実際は上海よりもだいぶ速い結果となった。
- from
- 都内
- to
- AWS Asia Pacific (Singapore)
sshの場合
1回のssh接続とコマンド実行で940-1040msほどの時間がかかっている。
for ((i=0 ; i<10 ; i++)); do /usr/bin/time ssh singapore_server "echo 'hello' >/dev/null"; done
0.95 real 0.02 user 0.00 sys
0.96 real 0.02 user 0.00 sys
0.96 real 0.02 user 0.00 sys
0.95 real 0.02 user 0.00 sys
1.04 real 0.02 user 0.00 sys
1.00 real 0.02 user 0.00 sys
1.01 real 0.02 user 0.00 sys
1.02 real 0.02 user 0.00 sys
0.94 real 0.02 user 0.00 sys
1.00 real 0.02 user 0.00 sys
httpの場合
156ms/reqくらいの速度が出ている。
$ ab -n 10 -c 1 http://singapore_server/
Concurrency Level: 1
Time taken for tests: 1.564 seconds
Complete requests: 10
Failed requests: 0
Total transferred: 40040 bytes
HTML transferred: 37700 bytes
Requests per second: 6.40 [#/sec] (mean)
Time per request: 156.364 [ms] (mean)
Time per request: 156.364 [ms] (mean, across all concurrent requests)
Transfer rate: 25.01 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 73 78 5.3 76 88
Processing: 73 79 5.4 78 88
Waiting: 73 79 5.4 78 88
Total: 147 156 9.2 157 173