BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース NetflixがLog4Jを大規模向けのロギング生成に最適化

NetflixがLog4Jを大規模向けのロギング生成に最適化

原文(投稿日:2012/12/04)へのリンク

 

Blitz4kは、Netflixがlog4jを内部的に最適化したバージョンであり、Githubにリリースされた。Blitz4j は、大量の並列で、高トラフィックな環境でも効率的にログを生成できるが、他のもっと古いロギング技術よりも、より少ないリソースしか消費しない。このことを達成するために、log4jのコードにおいて同期とデッドロックが起こりそうな部分を書き換えた。

log4Jに対してNetflix が行った変更には以下のものがある。

  1. 並列データ構造により、全てのクリティカルな同期を排除した。
  2. インメモリバッファとワーカースレッドの点で最高の設定可能性を提供する。
  3. wait-notifyモデルをエグゼキュータープールモデルで置き換えることにより、アプリケーションスレッドをロギングスレッドからもっと隔離した。
  4. 設定可能なサマリーにより、ログストーム中のログメッセージのハンドリングを改善した。

Netflixの報告によると、1秒で 300~500行をロギングするコストは、Blitz4jによって少なくとも75%下がった。そして同期に関連したプロセッサ動作のスパイクが完全になくなった。アプリケーションは、高使用で高ロギングの期間中でもまあまあの時間内で応答できるようになった。

1インスタンス当たりのロギングのトラフィックと必要性が増すほど、log4jは、ますますリソースを消費し、ログしている、まさにそのプロセスを遅くしてしまうことにNetflixは気がついた。彼らは、LogBackのような 別のロギング技術を採用することには躊躇した。彼らはlog4jにはかなりの投資をしていたからである。その代わりに彼らは、log4jを書き換え、非ブロッキングで非同期のロギング用にカスタマイズすることにした。log4jフレームワークは、大方変わらない。スケーラビリティに影響する部分だけを変更した。

Netflixの Karthikeyan Ranganathan氏が認識しているのは、始まったばかりのプロジェクトには、Blitz4jは最高の選択ではないかもしれないことだ。 LogBackはlog4jを作成したチームによる製品でNetflixチームが上げている多くの懸念事項に対処している。この点で、これまでのlog4jフレームワークに投資していないようなプロジェクトやslf4jにあうように作られて きたプロジェクトは、Blitz4jよりもLogBackを使うことを考えるべきである。しかしlog4jに相当な投資をしてきた会社には、 Blitz4jはインターネット規模でロギングするには、有効な選択肢である。

 

この記事に星をつける

おすすめ度
スタイル

BT