developer's diary

最近はc#のエントリが多いです

GMOクラウド VPSのマイクロプランでnode.jsのコンパイル時間を計測する

rootで実行

yum -y install wget openssl-devel gcc-c++ make
wget http://nodejs.org/dist/v0.10.0/node-v0.10.0.tar.gz
time tar zxvf node-v0.10.0.tar.gz
cd node-v0.10.0
./configure
time make
make install

version 0.10.0なので、ec2と正確な比較にはならないのですが、 EC2は前回のエントリから結果を。

解凍時間

tar m1.xlarge m1.large m1.small t1.micro GMOクラウド VPS
real 0m0.851s 0m1.034s 0m3.999s 0m1.286s 0m1.553s
user 0m0.680s 0m0.736s 0m1.712s 0m0.560s 0m0.737s
sys 0m0.496s 0m0.504s 0m1.660s 0m0.420s 0m0.762s

コンパイル時間

make m1.xlarge m1.large m1.small t1.micro GMOクラウド VPS
real 6m16.558s 6m14.260s 13m45.992s 39m51.288s 6m47.398s
user 4m54.962s 4m52.074s 10m48.917s 29m23.018s 4m7.297s
sys 0m46.923s 0m46.819s 2m15.564s 6m20.580s 0m37.334s

性能に対するコストパフォーマンスは凄く良いです。 m1.largeにCPU性能が近いので価格比較すると、重度リザーブドインスタンスの半額。 m1.smallと価格比較すると、バージニア州の重度リザーブドインスタンスと同等くらい。 東京だと2万円こえるので、やっぱりGMOクラウド VPSのコスパはよさそう。

スペック EC2(m1.small) GMOクラウド VPS
メモリ 3.75G 2G
CPU 2 ECU(2 ECU × 1仮想コア) 仮想3コアリソース保証
HDD 410 GB 100GB

GMOクラウド VPSのマイクロプラン申し込んでみました。

ステータスはお手続き中・・・・EC2だと5分もあれば起動するんだけども、GMOクラウドVPSは時間かかるみたいです。午前中には触れるようになるでしょう。

VPSコンソールのメニューはこんな感じ。

f:id:mitsugi-bb:20130312075742p:plain

CPU*3に、メモリが2GでHDDが100Gで月額980円(1年分前払い)はすごく魅力的な価格です。 m1.small(EC2のデフォルトインスタンス)のリザーブドインスタンスよりも安いです。

EC2の第1世代インスタンスでnode.jsのコンパイル時間を計測する

調べたインスタンス

f:id:mitsugi-bb:20130309205738p:plain

まず解凍・・・

tar m1.xlarge m1.large m1.small t1.micro
real 0m0.851s 0m1.034s 0m3.999s 0m1.286s
user 0m0.680s 0m0.736s 0m1.712s 0m0.560s
sys 0m0.496s 0m0.504s 0m1.660s 0m0.420s

コンパイル時間

make m1.xlarge m1.large m1.small t1.micro
real 6m16.558s 6m14.260s 13m45.992s 39m51.288s
user 4m54.962s 4m52.074s 10m48.917s 29m23.018s
sys 0m46.923s 0m46.819s 2m15.564s 6m20.580s

t1.microはキツイですね。

せっかくなので、node.jsを動かしてみましょう。

stackoverflowでみつけたnode.jsのコードで試してみます。 http://stackoverflow.com/questions/10457497/node-js-apache-bench-test

var sys = require('sys'),
http = require('http'),
fs = require('fs'),
index;

http.createServer(function(request, response) {

fs.readFile('./loadtestfile.txt', function (err, data) {

    response.writeHeader(200, {"Content-Type": "text/plain"});
    response.write(data);
    response.end();
 });

}).listen(80);

1kのファイル作成

dd if=/dev/zero of=loadtestfile.txt bs=1k count=1

起動

sudo /usr/local/bin/node test.js

aws内からabベンチ。

ab -c100 -n10000 をテスト Requests per second [#/sec] (mean)

- m1.xlarge m1.large m1.small t1.micro
1k 2949.32 1948.28 962.10 2521.37
10k 1642.44 1652.94 119.313 1736.27

っとこのへんで、t1.microのスポットインスタンスが脱落・・・

t1.microのnode.jsのコストパフォーマンスはピカ1でした。 コンパイルは最悪ですが・・・

ab -c1000 -n10000 をテスト Requests per second [#/sec] (mean)

- m1.xlarge m1.large m1.small
10k 2271.20 2277.20 825.06
100k 426.94 192.95 349.05
1m 落ちます 落ちます 落ちます

abコマンドで1000クライアントだと、たまにこんなふうに落ちます。

100kだとよく落ちます。

events.js:71
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: accept EMFILE
    at errnoException (net.js:770:11)
    at TCP.onconnection (net.js:1030:24)

あと、こんな風に

http.js:743
    throw new TypeError('first argument must be a string or Buffer');
          ^
TypeError: first argument must be a string or Buffer
    at ServerResponse.OutgoingMessage.write (http.js:743:11)
    at /home/ec2-user/test.js:11:14
    at fs.js:117:20
    at Object.oncomplete (fs.js:297:15)

ちなみに、httpdの場合の結果。

ab -c1000 -n10000 をテスト Requests per second [#/sec] (mean)

- m1.xlarge m1.large m1.small
10k 1884.99 1302.37 Total of 9820 requests completed
100k Total of 7339 requests completed Total of 4406 requests completed Total of 4719 requests completed
1m Total of 580 requests completed Total of 1225 requests completed Total of 344 requests completed

そしてnginxの場合

- m1.xlarge m1.large m1.small
100k 417.52 390.99 245.36
1m Total of 1319 requests completed Total of 3106 requests completed Total of 519 requests completed

nginx優秀ですね。100kでも Total of 9785 requests completed とかなりますが。一番安定してます。

Cloud Days Osaka 2013春に参加して~アマゾンデータサービスジャパン社長、長崎忠雄さんのプレゼンに少し感動。メモだけ残す

昨日、Cloud Days Osaka 2013春に参加してきました。

アマゾンデータサービスジャパン社長、長崎忠雄さんのリズミカルなプレゼンに少し感動したので、内容だけメモしときます。

メモのみです。。

【クラウドファースト時代到来。企業ITインフラで選択されるクラウドの条件とは?】

  • IT投資は横ばい
  • クラウドサービスは右肩上がり
  • キャペックス(CAPEX)からオペックス(OPEX)へ
  • クラウドとはイニシャルコストがかからない
  • クラウドとは低額な変動価格
  • クラウドとは実際の使用分のみ支払
  • コストマインドセット
  • クラウドとはセルフサービス可能なインフラ
  • クラウドとはスケールアップ・スケールダウンが可能
  • クラウドとは新サービス・製品をより速く市場へだせる
  • サービスの実験がやりやすい⇒リーンスタートアップのMVP(実用最小限の商品)に利用できる
  • サムソンはAWSの利用により、サムスンでは2年間で$34,000,000(約27億円)もの投資削減を実現
  • ケンコーコムが基幹システム(SAP)をAWSで運用
  • クラウドはもはやフロンティアだけじゃない。
  • 自治体もクラウド(あぐりっこ西宮)
  • 営業支援でiPadを利用したアプリのバックエンドにAWSを利用するガリバー
  • 1つのアプリあたり、70%のコスト削減が見込める調査結果がある
    • 詳細不明
  • もはや基幹システムをクラウドに移行できるか?という質問は愚問であるとある記者が言ってた
  • クラウドは経営学でいうリアルオプションにベストマッチ
  • クラウドはリーンスタートアップと相性がいい
  • リーンスタートアップは、スタートアップ事業者以外でも有効
    • 会社の社員でも、アントレプレナー精神は有効
    • IDEAS⇒BUILD⇒PRODUCT⇒MEASURE⇒DATA⇒LEARN⇒IDEA S・・・
  • アマゾンは2000年ごろから、グローバル化を展開するためにはプログラマブルなコンピューティング リソースが必要だと感じて研究開発を行ってきた。
  • 2000年頃のHBRに乗ってた、「amazon.comよどこへ行く?」の論文のコラムにシンクロしてちょっと感動(疑問に持たれた部分に関してきっちりと答えてる感に)
  • アマゾンというショッピングサイトを支えるためにAWSの基礎は必然的に必要だった。
    • それを外部に公開したのがAWSの始まり
  • 今のAWSは2003年にアマゾンが保有していたITインフラすべてのリソースを毎日追加している状態
  • ディザスタリカバリ、7か所のデータセンターが世界にある
  • BYOL(ライセンスの持ち込みが可能)
  • AWS DirectConnectやamazon Virtual Private CloudでIPセグメントごとクラウドに移行できる
  • awsの用途
    • 全社・部門アプリ
    • コンシュマー&ウェブアプリケーション
    • HPC & ビッグデータ
    • バックアップ & ディザスタリカバリ
  • 正解がわからないものほどクラウドに向いている
  • MVPをAWSで作って仕組みが有効か実験してから、オンプレミスかクラウドかの選択をすればいい
  • アマゾンには小売りのDNAがある。過去6年で27回の値下げを行っている
  • AWSを利用することによりセキュリティが向上した
  • 第三者機関の認証がある
  • Coiney がPCI DSS準拠でawsを利用
  • Nasdaq FinQloudがawsを利用