PayPalにおけるNode.jsのSSLパフォーマンス改善
PayPalで働くソフトウェアエンジニア、Trevor Livingston氏が最近の投稿で、Node.jsのアウトバウンドSSLパフォーマンスの改善提案について説明している。
計算負荷の低い暗号アルゴリズムを使う
Livingston氏はまず最初に、Node.jsがデフォルトで使っているDiffie HellmanやElliptical Curveといった暗号アルゴリズムは、強固ではあるが「あまりにも負荷が高く、デフォルト設定で大量のアウトバウンドSSL呼び出しをはじめると、基本的にNode.jsのパフォーマンスに影響を及ぼす」と述べた。Livingston氏によると、サービス呼び出し時間の87%が鍵生成に費やされているという。彼はもっとリソースを食わないアルゴリズムを使うよう提案している。
var agent = new https.Agent({
"key": key,
"cert": cert,
"ciphers": "AES256-GCM-SHA384"
});
Livingston氏のテストでは、AES256を使ったとき、鍵の生成に要する時間は32.5%に削減されたそうだ。
Keep Aliveを使う – keepAliveAgent
パッケージの作者によると、これはトランザクション数/秒を50%以上高めるという。今度のNode.js 0.12では、このパッケージは不要になるだろう。
agent.maxSocketsを最適化する – オリジンごとの同時接続ソケット数のデフォルトは5だが大きくしすぎてはいけない。Livingston氏によれば「パフォーマンスにマイナスの影響を与える」そうだ。
slab buffer sizeの調整に注意する – これはGC時間に大きな影響を与える。0.12が出れば、この調整は不要になるだろう。
Livingston氏はまた、今度のNode.js 0.12はある程度改善されており、AES256アルゴリズムを使ったときには、リクエスト数/秒は約2倍になると述べている。
セッションを再利用する – もう1つのNodeのパフォーマンス改善アドバイスは、セッションを再利用することだ。このアイデアはMiroslav Bajtoš氏の記事に詳しく説明されている。これをやるには、セッションストアを生成し、newSession
とresumeSession
イベントを扱う必要がある。記事には、セッション再利用のためのシングルスレッドアプリ用とワーカープロセスクラスタ用のコードサンプルも含まれている。
特集コンテンツ一覧
.NETでドメイン駆動開発~ValueObject後編~
上坂 貴志 - (株)ネクストスケープ 2014年3月25日 午後10時32分
.NETでドメイン駆動開発~ValueObject 前編~
上坂 貴志 - (株)ネクストスケープ 2014年3月19日 午後8時59分
BackboneとAngularを比較する
Victor Savkin 2013年12月23日 午後8時23分
Microsoftの技術の活用方法
Jonathan Allen 2013年12月1日 午後7時43分
アジャイル時代のモデリング: アジャイルチーム拡大のためにはコードの次に何を保つべきなのか
Kenji Hiranabe 2013年11月19日 午後6時56分
Java 8を可能にしたJava 7の機能
Ben Evans 2013年11月12日 午後8時25分
こんにちは
コメントするには InfoQアカウントの登録 または ログイン が必要です。InfoQ に登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。
あなたの意見をお聞かせください。