Author Archives: admin - Page 2

海外サーバーを高速に利用しよう(その5)

nginx local接続

本当はやりたくない方法なのだが、ここはセオリー通りに、nginxをローカル・キャッシュとして動作させると、nginxのボトルネックとなるバックエンドへの接続性は、当然のことながら、向上する。

[東京] -- [Chicago:nginx Proxy] -- [php7.0.x + OPCache:Apache Local]
     140ms                    0.06ms

# 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:        26422 bytes

Concurrency Level:      50
Time taken for tests:   0.930 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      1334048 bytes
HTML transferred:       1322318 bytes
Requests per second:    53.77 [#/sec] (mean)
Time per request:       929.812 [ms] (mean)
Time per request:       18.596 [ms] (mean, across all concurrent requests)
Transfer rate:          1401.12 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      140  147   5.6    145     156
Processing:   282  397  80.0    438     473
Waiting:      140  149   6.4    147     158
Total:        422  544  84.3    583     628

Percentage of the requests served within a certain time (ms)
  50%    583
  66%    609
  75%    613
  80%    625
  90%    628
  95%    628
  98%    628
  99%    628
 100%    628 (longest request)

ディスクIOが問題ないSSDを採用したサーバーなどでは、有効なようで、思ったほど、nginxによるメモリー負荷は問題にならなかった。
ここは、セオリー通りと言ったところなのだが、理屈どおりに、バックエンドへの接続性を向上させれば、優れたCacheとして動作するようだ。

残念なことに、この接続がここまでのテストの中では、一番高速化している。
海外サーバーを高速に使いたいといった要求には、この方法が最も良い結果となるようだ。

海外サーバーを高速に利用しよう(その4)

nginx 経由なし

本末転倒なのだが、nginxとバックエンドとの通信はそれほど賢い通信をしているわけではないので、nginx側のCacheが有効期限を過ぎた後に、Cache生成の為のアクセスが有ると、nginxを経由しないほうが、速い場合がある。Cacheまでの経路が離れていると、一度目のリクエストは完全に無効になるので、nginxがバックエンドに対してアクセスした後にCacheを生成するタイムラグとホストに対してダイレクトに応答できない初期応答では、ほぼ倍の時間がかかってしまう。

アクセス数にもよるが、ホスト側にもOPCacheのようなCache生成の為のプロセスが走るので、Cache応答までの初期応答は、それほど高速化出来ない。
頻繁にアクセスされるような人気サイトでは、nginxの設置は劇的な効果が期待できる一方、アクセス数の少ないサイトでは、初期応答速度を高めたほうが、むしろ快適にアクセスできる。

[東京] -- [Chicago:php7.0.x + OPCache]
     140ms
# 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:        Apache/2.2.15
Server Hostname:        4cats.xaffy.net
Server Port:            80

Document Path:          /
Document Length:        26440 bytes

Concurrency Level:      50
Time taken for tests:   3.318 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      1347889 bytes
HTML transferred:       1335649 bytes
Requests per second:    15.07 [#/sec] (mean)
Time per request:       3318.249 [ms] (mean)
Time per request:       66.365 [ms] (mean, across all concurrent requests)
Transfer rate:          396.68 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      140  147   5.9    144     155
Processing:   306 1733 795.2   1876    2826
Waiting:      163 1580 790.3   1727    2667
Total:        446 1880 800.2   2020    2981

Percentage of the requests served within a certain time (ms)
  50%   2020
  66%   2434
  75%   2622
  80%   2660
  90%   2844
  95%   2955
  98%   2981
  99%   2981
 100%   2981 (longest request)

nginx経由で、約24ページ毎秒なので、php7.0.x + OPCache環境であるなら、nginxを経由させない方法も場合によっては有効だろう。
場合により、WordPress側でCacheをもたせるのも、一つの方法かもしれない。

nginxを使う上で重要なのは、バックエンドへのアクセス性の配慮で、Cache応答よりも、Cache生成頻度が高くなるようなサイトでは、Cache保持期限を最大の7日にしたり、バックエンドまでの通信をできるだけ近い経路に置くことがポイントとなりそうだ。