海外サーバーを高速に利用しよう

nginx + Apache + php 7.0.x with OPCache

国内から、海外サーバーを使う場合、日本 — ロサンゼルス 若しくは、日本 — サンノゼあたりが最も近くなるが、それでも、太平洋を超えて、地球の裏側まで約、1万キロメートル先のサーバーまでの接続となるので、海底ラインが高速化した現在でも、まだ、100ms ~ 200ms前後のレイテンシがある。
このような場合には、リクエスト応答は、できれば、圧縮したり、パケットロスが生じないように、Cacheの設置などが、効果がある。

nginx

nginxのような、比較的高速なCacheをReverse Proxyとしておけば、Cacheのみの応答になるので、距離が離れて、リクエスト数に応じて積算される応答遅延は劇的に軽減し、殆ど国内サーバーへのアクセスを行っているような感覚で遠く離れた、サーバーを利用することができる。
問題は、日本にnginx Cacheを置き、海外サーバーへの接続をProxyさせるか、Proxyまでの接続遅延は許容し、Proxy — Web Server応答を優先するかというのが、場合によっては問題になる。
今回は、ProxyもWeb Server共に、海外に置き、Web応答処理のみを高速化した場合に得られる効果を確認していきたいとおもう。

php7.0.x + OPCache

まずは、元となるWeb Serverは高速化しておくのが望ましいので、比較的程度の良い、海外VPS(VZベース)を設置し、Web応答ぬついては、php7.0.x + OPCacheで動作させることにした。
用いるサーバーは、1V-CPU 512MBメモリだが、SSDを採用しているIOが速そうなサーバーを選んだ。
スーパーπ 104万桁の計算には、約10秒前後で、ディスクアクセスが、700MiB/s~1GiB/s程度の比較的快適なサーバーだが、地理的な理由でレイテンシは、それほど良くないものとした。

接続経路

[東京]-----[ロサンゼス:nginx Reverse Proxy]----[シカゴ:Apache2 + PHP7.0.x with OPCaxhe]
     153ms                              20ms

というような感じになる。
WordPressは、標準構成で、WordPress上には、Cacheを置かないことにした。

レスポンス測定結果

# ab -c 50 -n 50 http://4cats.xaffy.net/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 4cats.xaffy.net (be patient).....done


Server Software:        nginx
Server Hostname:        4cats.xaffy.net
Server Port:            80

Document Path:          /
Document Length:        10262 bytes

Concurrency Level:      50
Time taken for tests:   1.948 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      536486 bytes
HTML transferred:       522971 bytes
Requests per second:    25.67 [#/sec] (mean)
Time per request:       1947.603 [ms] (mean)
Time per request:       38.952 [ms] (mean, across all concurrent requests)
Transfer rate:          269.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      152  154   0.6    154     155
Processing:   155 1147 453.4   1406    1413
Waiting:      153  162   9.8    161     224
Total:        308 1301 453.8   1559    1568

Percentage of the requests served within a certain time (ms)
  50%   1559
  66%   1563
  75%   1563
  80%   1566
  90%   1567
  95%   1567
  98%   1568
  99%   1568
 100%   1568 (longest request)
# ab -c 1 -n 50 http://4cats.xaffy.net/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 4cats.xaffy.net (be patient).....done


Server Software:        nginx
Server Hostname:        4cats.xaffy.net
Server Port:            80

Document Path:          /
Document Length:        10262 bytes

Concurrency Level:      1
Time taken for tests:   15.410 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      526350 bytes
HTML transferred:       513100 bytes
Requests per second:    3.24 [#/sec] (mean)
Time per request:       308.192 [ms] (mean)
Time per request:       308.192 [ms] (mean, across all concurrent requests)
Transfer rate:          33.36 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      152  154   0.6    154     156
Processing:   153  155   0.6    155     156
Waiting:      153  154   0.6    154     155
Total:        306  308   1.2    308     311

Percentage of the requests served within a certain time (ms)
  50%    308
  66%    309
  75%    309
  80%    309
  90%    309
  95%    310
  98%    311
  99%    311
 100%    311 (longest request)

日本からの同時アクセスが50PVの場合、一秒間に、25.6ページの応答スピードとなった。
当然、日本からの平均アクセす応答は、3.2ページの応答となり、Cacheが効いている状態では、殆ど瞬時に応答できる数値となった。

Comments are closed.