
- Redhat Linux Enterprise Server 5.10 (古いのはわかっていますが、変更できません)
- このマシンは VMTools を使用して仮想化されています。
- この VM の合計メモリ: 32 GB。合計ディスク スワップ領域 (仮想メモリ): 36 GB。メイン ドライブに 900 GB が残っています。
- ターミナルは Windows 7 上の Hummingbird Exceed v14 です。(どちらも変更できません。)
- 私は本物のシステム管理者ではなく、マシン上でプログラムするだけです。そのため、ログがどこにあるのか、何を grep で検索するのかなど、より詳細な手順があると助かります。
スプレッドシートから 7000 行 (それほど大きくはありません) を読み取る特定のプログラムを実行しているときに、プロセスが強制終了され、ターミナルが消えることがあります。
- OS がプロセスを強制終了する理由は何でしょうか?
- この VM が常駐する物理サーバーは昨日非常に混雑していました。このサーバー上の他の VM がどれだけのメモリを使用していたかは誰にもわかりませんが、32 GB のメモリは私の VM 専用に予約されるべきではないでしょうか?
- VMTOOLS は、メモリが少なくなるとすべての仮想マシンを調べて、ランダムに VM とランダムにリソースを消費する仮想マシンを選択して終了するのでしょうか? (私のプロセスは CPU 時間の 95 ~ 99% を使用していましたが、これも私の VM だけの問題だと思っていました。)
ありがとう。本当に困ってます。
編集 1: /var/log/syslog をチェックして、いくつかの種類の行を無視したところgrep -v
、キックオフされたときに、リソースを大量に消費する cron ジョブが実行されているように見えました。それが起こったのだと思います。
さて、私の質問は、これらの cron ジョブが使用するメモリとスワップ領域を制限して、メモリが使い果たされず、ターミナルが強制終了されないようにすることはできるでしょうか? OS レベルで何かできることはありますか?
編集 2017 年 12 月 7 日: でさらに調査した結果top
、メモリ、スワップ領域、ハード ドライブ領域を使い果たす心配はまったくありませんでした。したがって、何か他のことが起こっており、IT 部門が調査中です。
答え1
さて、私の質問は、これらの cron ジョブが使用するメモリとスワップ領域を制限して、メモリが使い果たされず、ターミナルが強制終了されないようにすることはできるでしょうか? OS レベルで何かできることはありますか?
はい。よく読んでください制限の設定(2). 使用したいulimit
bash組み込み適切に。
注意してくださいメモリオーバーコミット。