web-dev-qa-db-ja.com

Python Jupyter Notebookを搭載したサーバーでメモリ不足

私はサーバーを使うのは初めてですが、最近ボトルネックになり、クラウド上で計算を行わなければなりませんでした。サーバーを2週間使用した後、いくつかのメモリの問題があるようです。

私はJupyterノートブックと大きなファイルの保存にサーバーを使用しています。大きなファイルをJupyterノートブックにロードし、最初の2週間は問題なくファイルをロードしました。しかし今日、私は記憶問題の後で記憶問題に出くわしました。そして、それはあまりにも悪いので、私がすべてのアクティブなノートブックをシャットダウンして最初の数冊のノートブックを実行した後でも、メモリの問題のために機能するものはありませんでした。

TOPコマンドを使用すると、メモリの約90%が使用可能であると表示されます。ただし、過去2週間実行していたコードを問題なく実行することはできません。

だから私は定期的にサーバーを再起動する必要があるのか​​、この問題を解決するために何かを疑問に思っています。または、それが他の何かである場合。

ありがとう!

1
Rui Nian

Jupyterノートブックにファイルをロードし、その内容を変数に保存すると、基になるPythonプロセスは、変数が存在し、ノートブックが実行されている限り、このデータに割り当てられたメモリを保持します。 Pythonのガベージコレクター は、データが不要になったことを検出すると、メモリを再度解放します(ほとんどの場合)。これは、たとえば del を使用して削除された場合に当てはまります。 =、変数が他のもので上書きされた場合、またはスコープ外になった場合(関数の最後のローカル変数)。

大きなファイルを(異なる)変数に数週間保存している場合、データはメモリに残り、最終的にはいっぱいになります。この場合、実際にはノートブックを手動でシャットダウンするか、他の方法を使用して(グローバル)変数を削除する必要があります。

同じ種類の問題のまったく異なる理由は、Jupyterのバグである可能性があります。この種のバグはメモリリークと呼ばれ、長時間実行されているサーバープロセスで発生することがよくあります。 Pythonで発生する可能性が低くても、Jupyterには somebugreports があります。この場合、回避策はJupyterプロセスを再起動することだけかもしれません。他の場合には、そうすることをお勧めします。

1
lumbric