RHEL 6 でアプリケーションがメモリーを大量に使用する
Issue
-
RHEL 6.3 と 6.4 でアプリケーションがメモリーを大量に使用します。5.6 では問題ありません。メモリー (RSS および VSZ) が非常に大きくなる問題が発生しています。 この問題は、おそらく sourceware.org および IBM developerworks に記載されている glibc 2.10 以降に含まれる新しいメモリー領域アロケーターが原因となっています。
- THP (Transparent HugePage) サポートがデフォルトで有効になっており、アプリケーションのメモリーの RSS が、同じソフトウェアがビルドされている RHEL 5 と比較して大きくなっています
- カーネルのコマンドラインオプションを設定する (transparent_hugepage=never を追加) か、
echo never
>/sys/kernel/mm/redhat_transparent_hugepage/enabled
を動的に設定してから THP (Transparent HugePage) サポートを無効にすると、メモリーが元に戻ります。 - THP [Anon Huge ページ] を無効にしても、同じソフトウェアがビルドされている RHEL 5 と比較して仮想メモリは大きくなります。
- THP (Transparent Huge Page)を有効にし、領域を設定すると、仮想メモリーが大きくなっているようです。
- 起動する際の MALLOC_ARENA_MAX 環境変数を 4 に設定し、先行試験を行いましたが、仮想メモリーの成長が速くなっているようです。5% または 10% 増加した場合は特に問題ありませんが、10 倍になるとサイズが 250G になります。
- 仮想メモリー (VM) の範囲は、仮想メモリー (VM) のカーネル管理に関する問題が発生します。
-
jdk 7u5_x64 を使用して RHEL 6 の Java アプリケーションをテストすると、VM の使用量が大きく増加します。これについて調査を行い、HADOOP-7154 に従って MALLOC_ARENA_MAX=4 を設定しました。これにより、VM の使用量は期待するレベルにまで戻りました。
Why do multithreaded applications use significantly more virtual memory on a more recent version of Red Hat Enterprise Linux を参考にしましたが、領域がどのように機能するかについて情報を探しています。値は 4 でテストを行ったところ、期待した効果を得られたようですが、その理由が分かりません。google のアーティクルでは 1 を使用しないようにとありますが、その理由が分かりません。 -
JBoss インスタンスのプロセスサイズが大きくなっている (設定したものよりも多くの物理ヒープを使用している) のを確認しています。ただし、これは RHEL サーバーでのみ発生しているようです。この問題が発生している原因と、このような問題を解析するのに最適な方法を教えてください。
Environment
- Red Hat Enterprise Linux (RHEL) 6
- RHEL 5.6 から RHEL 6.4 にアップグレードしたシステム
- RHEL 6 にアップグレードしたシステム
- RHEL 6 で実行している java アプリケーション
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.