Linuxのバフ/キャッシュが大きすぎる、明確なスクリプト
3つの命令:
同期
エコー1> / proc / sys / vm / drop_cachesと
エコー2> / proc / sys / vm / drop_cachesと
エコー3> / proc / sys / vm / drop_cachesと
あなたが無料-mコマンドで参照するには、これらの3つの命令を実行した後、利用可能な空きメモリがすぐに増加し、バフ/キャッシュ列の値は、メモリが解放されていることを示す、減少したが、常に手動で3つの命令を実行していないので、私は最終的にシェルを書きました4G未満:スクリプト、Linuxは三つのコマンド(システムの内容20G注)を実行され、crond定期的なタスクは、毎朝一度空きメモリをチェック開きます。
注:システムを停止する必要がある場合は同期サブルーチンを実行するには次の3つのコマンド(説明:.同期コマンドを実行する前にsyncコマンドを実行してください、すべての不文システムのファイルシステム.syncコマンドの整合性を確保するためにsyncコマンドを実行します。バッファがI-修飾を含む、ディスクに書き込まれているノードを、遅延ブロックは、I / O読み取りおよび書き込み、およびマッピング・ファイル)
ソリューション(マニュアル)
1. / proc / sys / vm / drop_cachesとを変更し、リリーススラブは(公式文書drop_cachesと参照してください)キャッシュメモリ空間を占有しました:
- これに書き込むと、カーネルが自由になるためにそのメモリを引き起こして、メモリからクリーンなキャッシュ、dentriesとiノードをドロップするようになります。
- 無料ページキャッシュに:
- *エコー1> / proc / sys / vm / drop_cachesと
- 無料dentriesとiノードへ:
- *エコー2> / proc / sys / vm / drop_cachesと
- ページキャッシュ、dentriesとiノードを解放するには:
- *エコー3> / proc / sys / vm / drop_cachesと
- これは、非破壊的な操作で、汚れたオブジェクトはnotfreeableであるため、ユーザーは必ずallcachedオブジェクトが解放されるようにするために最初の「同期」を実行する必要があります。
- この調整パラメータは2.6.16で追加されました。
注:これらの3つのコマンドを実行する前に、第1同期コマンド
ソリューション(自動)
シェルスクリプトを書くために1、定期的なタスクfreemem.sh
- #!/ binに/ shを
- 使用= `無料-m | awkのNR == 2 '| awkは ` '{$ 3印刷します}'
- 無料= `無料-m | awkのNR == 2 '| awkは ` '{$ 4印刷します}'
- エコー "===========================" >> /app/memory/logs/mem.log
- 日付>> /app/memory/logs/mem.log
- エコー "メモリ使用量の前に| [使用:$ {使用} MB] [無料:$ {自由} MB]" >> /app/memory/logs/mem.log
- もし[$自由-le 4000]; それから
- 同期&& 1> / proc / sys / vm / drop_cachesとエコー
- 同期&& 2> / proc / sys / vm / drop_cachesとエコー
- 同期&& 3> / proc / sys / vm / drop_cachesとエコー
- used_ok = `無料-m | awkのNR == 2 '| awkは ` '{$ 3印刷します}'
- free_ok = `無料-m | awkのNR == 2 '| awkは ` '{$ 4印刷します}'
- エコー "メモリ使用後| [使用:$ {} used_ok MB] [無料:$ {} free_ok MB]" >> /app/memory/logs/mem.log
- エコー "OK" >> /app/memory/logs/mem.log
- 他
- /app/memory/logs/mem.log >>「必要ない」エコー
- されます
- 1番出口
2、現在のユーザーのcrontabを編集するのcrontab -eコマンドを使用して
- 0 6 * * * /usr/local/tomcat/sztFileFront/bin/freemem.sh
書き込み参照のタイミングタスク:http://www.jb51.net/article/15008.htm
3、crondサービスを再起動します
- / sbinに/サービスcrondを再起動
サービスが正常に再起動crondかどうかを確認するには4、
- / sbinに/サービスcrondの状態
最後に、問題が解決されます。定期的なタスクは、私がfreemem.shスクリプトを実行するために毎朝6時に設定します。
キャッシュメモリ使用量でLinuxが高すぎるソリューションです
Linuxシステムでは、我々は多くの場合、システムメモリの使用を表示する無料のコマンドを使用します。RHEL6のシステムでは、などの無料のコマンドは、このようなものの状態の内容を表示します。
ここに私のサーバーは、128Gメモリなので、数字が比較的大きいと思われる、デフォルトの表示単位キロバイトです。このコマンドは、ほとんどすべての人は、Linuxコマンドを使用する必要がありますされていますが、より多くのようにコマンドは、あまりそれは本当に(私はあまりの割合を意味する)の人々を理解しているようです。一般的には、このコマンドの出力を理解することは、いくつかのレベルに分けられます。
-
理解していません。多くのメモリ、70以上のGで、神が、私はほとんど大きなランニングああを持っている:最初の反応は、このような人ですか?なぜこれがそうですか?Linuxは、良い思い出を占め!
-
私は非常に理解と思います。一般的に評価されるような人々は言うだろう:ああ、私のプロの目は17G程度のメモリで、それを見るために、空きメモリの多くが利用可能です。使用するとき、アイドル、このメモリをバッファは/キャッシュは、システムは、プロセスがファイルを読み書きするために使用されたことを示す、大きな占有が、それは問題ではありません。
-
本当に理解しています。そのような人々の反応が、人々はほとんどがLinuxを理解していないと感じ、彼らの反応は:この無料のショーがあり、よく私が知っています。神の馬?あなたは十分にこれらのメモリを私に尋ねる、私は確かにそれを知りません!私はそれがどのようにあなたのプログラムの書き方を特別知っていますか?
Web上の現在の技術文書の内容によると、私はほとんどの人は、Linuxが第2レベルであることを理解すべきであると考えています。これは、広く使用された場合、バッファとキャッシュされたメモリ占有スペースがより大きなメモリ圧力の空き領域として解放することができ、感じました。しかし、実際の場合?この問題を示す前に、我々は最初に簡単にバッファを記述し、それが何を意味するか、キャッシュされました:
バッファ/キャッシュとは何ですか?
バッファとキャッシュは二つの用語の下で異なる意味は、コンピュータ技術の文脈に置かれ、過剰と無理に使用されてきています。Linuxのメモリ管理では、ここでのバッファは、Linuxのメモリを参照:バッファ・キャッシュを。ページのキャッシュ:ここでのキャッシュは、Linuxのメモリを指します。バッファキャッシュとページキャッシュを中国語に翻訳呼び出すことができます。他の(キャッシュ)は、リードキャッシュデバイスとして使用されている間、歴史的に、それらは(バッファ)は、主に、ブロック・デバイス・ファイルを参照し、ここで、IO装置をioを、IO装置を書き込むためにキャッシュとして使用されるとファイルシステム上の通常のファイル。しかし、今、彼らは同じ意味を持っていません。現在のカーネルでは、名前はそれがメモリページ割り当て管理がある場合、あなたはその使用を管理するためのキャッシュとしてページキャッシュを使用できることを意味し、キャッシュページのキャッシュ・メモリ・ページのためにあることを示唆しています。もちろん、すべてではないメモリは、ページ(ページ)にある管理し、多くのブロック(ブロック)のために管理されていますが、機能をキャッシュしたい場合は、メモリ使用量のこの部分は、使用するバッファキャッシュに集中しています。(この観点から、ブロックキャッシュバッファ・キャッシュがより良い名前を変更と呼ばれていない?)しかし、すべてのブロック(ブロック)が固定された長さを持っていない、システム上のブロックの長さは、主にブロック決定で使用される機器、およびページに基づいて32ビットまたは64ビットのいずれかでX86長が4Kです。
システムキャッシュのこれらの2つのセットの間の違いを理解し、我々は、彼らが行うために使用することができます正確に理解することができます。
ページキャッシュとは何ですか?
ページキャッシュは、主にプロセスがファイルの読み取り/書き込み操作のための時間がある場合は特に、使用するファイルシステム上のキャッシュファイルのデータとして使用されています。あなたはそれについて考える場合は、システムコールとしてメモリにファイルをマップすることができます。mmapのは非常に自然ではありませんまた、ページキャッシュを使用する必要がありますか?ページキャッシュはまた、使用するファイル・キャッシング・デバイスの別のタイプであるので、実際にはキャッシュページキャッシュは、作業ブロックデバイスファイルのほとんどに責任があるとして、現在のシステムの実装では。
バッファキャッシュとは何ですか
システムは、読み取りおよび書き込みデバイスをブロックするように設計されている場合、バッファキャッシュが主に使用され、ブロックデータキャッシュシステムを使用します。これは、操作のいくつかは、そのような私たちは、ファイルシステムのフォーマットであるときのように、バッファキャッシュ・ブロック・キャッシュを使用することを意味します。通常の状況下では、2つのキャッシュ・システムは、このような私たちは、ファイルに書き込むときのように、使用されているとともに、コンテンツページのキャッシュが変更され、バッファ・キャッシュが異なるページバッファをマークするために使用することができ、その変更されたレコードバッファです。このように、ダーティデータのライトバック(書き戻し)のその後の実行中のカーネルには、ページ全体がライトバックが、ちょうど修正部分ができ書き戻す必要はありません。
キャッシュをリサイクルする方法?
メモリは、プロセスによって使用されるメモリに大いに必要なメモリを解放するためにガベージコレクションの仕事をトリガー、枯渇されるLinuxカーネル。一般的には、この操作は、リリース・バッファ/キャッシュのリリースにメインメモリから来ています。特に、より多くのキャッシュスペースを使用します。それは主にキャッシュに使用されているので、ちょうど十分なメモリの時にスピードを読み書きファイルのプロセスをスピードアップし、より大きなメモリ圧力で、もちろん、キャッシュの解放を空にし、空き領域として使用される関連プロセスを与える必要があります。そのため、通常の状況下では、我々は/キャッシュ・スペースをバッファ信じる解除することができ、このような理解は正しいです。
しかし、この明確なキャッシュ作業はコストがないわけではありません。キャッシュは、キャッシュのクリアファイルに対応するキャッシュデータのデータと一致している必要があります理解することができますやっている理解し、キャッシュをすることができますリリース。だから、行動のクリアキャッシュと一緒に、一般的にIOが急上昇システムです。対応するデータとハードディスクのファイルと比較してどうかカーネルキャッシュ上のデータ、そしてあなたが回復することができます前に書き戻す必要はありませんかのため。
メモリはキャッシュをクリアすることができます外部に排出されている場合を除き、我々は手動でトリガするために、次のファイルシステムキャッシュのクリア動作を使用することができます。
[ルート@のtencent64〜]#猫/ proc / sys / vm / drop_cachesと 1
方法は次のとおりです。
エコー1> / proc / sys / vm / drop_cachesと
もちろん、このファイルの値は、それぞれ、1,2,3を設定することができます。彼らが表現されていることを意味:
1> / procの/ sysは/エコー :VM / drop_cachesとは、 ページキャッシュをクリアします。 エコー2>の/ proc / SYS / VM / drop_cachesと: (キャッシュ・ディレクトリ・エントリとiノードキャッシュを含む)スカベンジスラブアロケータオブジェクトを表します。スラブアロケータは、カーネルのメモリ管理メカニズムは、キャッシュデータがページキャッシュに使用されているの多くを達成することです。 3エコー> / procの/ SYS / VM / drop_cachesと: キャッシュオブジェクトとページキャッシュスラブディスペンサーをクリアします。
次のように最適化した後のショットは、以下のとおりです。
Linuxシステムでは、我々は多くの場合、システムメモリの使用を表示する無料のコマンドを使用します。RHEL6のシステムでは、などの無料のコマンドは、このようなものの状態の内容を表示します。
ここに私のサーバーは、128Gメモリなので、数字が比較的大きいと思われる、デフォルトの表示単位キロバイトです。このコマンドは、ほとんどすべての人は、Linuxコマンドを使用する必要がありますされていますが、より多くのようにコマンドは、あまりそれは本当に(私はあまりの割合を意味する)の人々を理解しているようです。一般的には、このコマンドの出力を理解することは、いくつかのレベルに分けられます。
-
理解していません。多くのメモリ、70以上のGで、神が、私はほとんど大きなランニングああを持っている:最初の反応は、このような人ですか?なぜこれがそうですか?Linuxは、良い思い出を占め!
-
私は非常に理解と思います。一般的に評価されるような人々は言うだろう:ああ、私のプロの目は17G程度のメモリで、それを見るために、空きメモリの多くが利用可能です。使用するとき、アイドル、このメモリをバッファは/キャッシュは、システムは、プロセスがファイルを読み書きするために使用されたことを示す、大きな占有が、それは問題ではありません。
-
本当に理解しています。そのような人々の反応が、人々はほとんどがLinuxを理解していないと感じ、彼らの反応は:この無料のショーがあり、よく私が知っています。神の馬?あなたは十分にこれらのメモリを私に尋ねる、私は確かにそれを知りません!私はそれがどのようにあなたのプログラムの書き方を特別知っていますか?
Web上の現在の技術文書の内容によると、私はほとんどの人は、Linuxが第2レベルであることを理解すべきであると考えています。これは、広く使用された場合、バッファとキャッシュされたメモリ占有スペースがより大きなメモリ圧力の空き領域として解放することができ、感じました。しかし、実際の場合?この問題を示す前に、我々は最初に簡単にバッファを記述し、それが何を意味するか、キャッシュされました:
バッファ/キャッシュとは何ですか?
バッファとキャッシュは二つの用語の下で異なる意味は、コンピュータ技術の文脈に置かれ、過剰と無理に使用されてきています。Linuxのメモリ管理では、ここでのバッファは、Linuxのメモリを参照:バッファ・キャッシュを。ページのキャッシュ:ここでのキャッシュは、Linuxのメモリを指します。バッファキャッシュとページキャッシュを中国語に翻訳呼び出すことができます。他の(キャッシュ)は、リードキャッシュデバイスとして使用されている間、歴史的に、それらは(バッファ)は、主に、ブロック・デバイス・ファイルを参照し、ここで、IO装置をioを、IO装置を書き込むためにキャッシュとして使用されるとファイルシステム上の通常のファイル。しかし、今、彼らは同じ意味を持っていません。現在のカーネルでは、名前はそれがメモリページ割り当て管理がある場合、あなたはその使用を管理するためのキャッシュとしてページキャッシュを使用できることを意味し、キャッシュページのキャッシュ・メモリ・ページのためにあることを示唆しています。もちろん、すべてではないメモリは、ページ(ページ)にある管理し、多くのブロック(ブロック)のために管理されていますが、機能をキャッシュしたい場合は、メモリ使用量のこの部分は、使用するバッファキャッシュに集中しています。(この観点から、ブロックキャッシュバッファ・キャッシュがより良い名前を変更と呼ばれていない?)しかし、すべてのブロック(ブロック)が固定された長さを持っていない、システム上のブロックの長さは、主にブロック決定で使用される機器、およびページに基づいて32ビットまたは64ビットのいずれかでX86長が4Kです。
システムキャッシュのこれらの2つのセットの間の違いを理解し、我々は、彼らが行うために使用することができます正確に理解することができます。
ページキャッシュとは何ですか?
ページキャッシュは、主にプロセスがファイルの読み取り/書き込み操作のための時間がある場合は特に、使用するファイルシステム上のキャッシュファイルのデータとして使用されています。あなたはそれについて考える場合は、システムコールとしてメモリにファイルをマップすることができます。mmapのは非常に自然ではありませんまた、ページキャッシュを使用する必要がありますか?ページキャッシュはまた、使用するファイル・キャッシング・デバイスの別のタイプであるので、実際にはキャッシュページキャッシュは、作業ブロックデバイスファイルのほとんどに責任があるとして、現在のシステムの実装では。
バッファキャッシュとは何ですか
システムは、読み取りおよび書き込みデバイスをブロックするように設計されている場合、バッファキャッシュが主に使用され、ブロックデータキャッシュシステムを使用します。これは、操作のいくつかは、そのような私たちは、ファイルシステムのフォーマットであるときのように、バッファキャッシュ・ブロック・キャッシュを使用することを意味します。通常の状況下では、2つのキャッシュ・システムは、このような私たちは、ファイルに書き込むときのように、使用されているとともに、コンテンツページのキャッシュが変更され、バッファ・キャッシュが異なるページバッファをマークするために使用することができ、その変更されたレコードバッファです。このように、ダーティデータのライトバック(書き戻し)のその後の実行中のカーネルには、ページ全体がライトバックが、ちょうど修正部分ができ書き戻す必要はありません。
キャッシュをリサイクルする方法?
メモリは、プロセスによって使用されるメモリに大いに必要なメモリを解放するためにガベージコレクションの仕事をトリガー、枯渇されるLinuxカーネル。一般的には、この操作は、リリース・バッファ/キャッシュのリリースにメインメモリから来ています。特に、より多くのキャッシュスペースを使用します。それは主にキャッシュに使用されているので、ちょうど十分なメモリの時にスピードを読み書きファイルのプロセスをスピードアップし、より大きなメモリ圧力で、もちろん、キャッシュの解放を空にし、空き領域として使用される関連プロセスを与える必要があります。そのため、通常の状況下では、我々は/キャッシュ・スペースをバッファ信じる解除することができ、このような理解は正しいです。
しかし、この明確なキャッシュ作業はコストがないわけではありません。キャッシュは、キャッシュのクリアファイルに対応するキャッシュデータのデータと一致している必要があります理解することができますやっている理解し、キャッシュをすることができますリリース。だから、行動のクリアキャッシュと一緒に、一般的にIOが急上昇システムです。対応するデータとハードディスクのファイルと比較してどうかカーネルキャッシュ上のデータ、そしてあなたが回復することができます前に書き戻す必要はありませんかのため。
メモリはキャッシュをクリアすることができます外部に排出されている場合を除き、我々は手動でトリガするために、次のファイルシステムキャッシュのクリア動作を使用することができます。
[ルート@のtencent64〜]#猫/ proc / sys / vm / drop_cachesと 1
方法は次のとおりです。
エコー1> / proc / sys / vm / drop_cachesと
もちろん、このファイルの値は、それぞれ、1,2,3を設定することができます。彼らが表現されていることを意味:
1> / procの/ sysは/エコー :VM / drop_cachesとは、 ページキャッシュをクリアします。 エコー2>の/ proc / SYS / VM / drop_cachesと: (キャッシュ・ディレクトリ・エントリとiノードキャッシュを含む)スカベンジスラブアロケータオブジェクトを表します。スラブアロケータは、カーネルのメモリ管理メカニズムは、キャッシュデータがページキャッシュに使用されているの多くを達成することです。 3エコー> / procの/ SYS / VM / drop_cachesと: キャッシュオブジェクトとページキャッシュスラブディスペンサーをクリアします。
次のように最適化した後のショットは、以下のとおりです。