BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース PayPalにおけるNode.jsのSSLパフォーマンス改善

PayPalにおけるNode.jsのSSLパフォーマンス改善

原文(投稿日:2014/04/17)へのリンク

PayPalで働くソフトウェアエンジニア、Trevor Livingston氏が最近の投稿で、Node.jsのアウトバウンドSSLパフォーマンスの改善提案について説明している。

計算負荷の低い暗号アルゴリズムを使う

Livingston氏はまず最初に、Node.jsがデフォルトで使っているDiffie HellmanElliptical 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š氏の記事に詳しく説明されている。これをやるには、セッションストアを生成し、newSessionresumeSessionイベントを扱う必要がある。記事には、セッション再利用のためのシングルスレッドアプリ用とワーカープロセスクラスタ用のコードサンプルも含まれている。

この記事に星をつける

おすすめ度
スタイル

BT