3

Torquebox でさまざまな Rails アプリケーションを実行しています。時折、Torquebox がリクエストへの応答を短時間 (おそらく 2 ~ 5 分) 停止し、ログが次のエラー メッセージでいっぱいになることがあります。

java.lang.OutOfMemoryError: Direct buffer memory

エラーは予測不可能な時間に発生します (多くの場合、数日間)。負荷テストでは問題が再現されず、負荷のピーク時には問題は発生しません。そして、私が過去に見た他の多くの種類のメモリ エラーとは異なり、サーバーは実際に回復し、再起動や介入を一切行わなくても正常に応答し始めます。

このエラーを定期的に引き起こす、一般的なコーディングの間違い、設定ミス、またはその他の潜在的な問題はありますか? Google は、さまざまなライブラリ (Netty など) に関する下位レベルの Java/ガベージ コレクション タイプの問題を多数明らかにしていますが、他にもよく見られる場所があるかどうかを知りたいと思っています。

4

2 に答える 2

1

この場合の問題は、使用可能な合計メモリが十分にないことでした。Java のメモリ フットプリントは、ヒープ割り当てよりも大幅に大きくなる可能性があります。ダイレクト バッファ メモリは、ヒープ外のメモリ使用タイプの 1 つにすぎません。

なぜ変動が予測不可能な時期に発生するのかはまだはっきりしていませんが、変動を処理するのに十分な余剰メモリをシステムに確保することは、安定性にとって重要です。

于 2014-01-30T16:31:27.630 に答える