(個人的な経験をもとに書いており、技術的な根拠は皆無です。当然動作は保証できませんのであくまでもポエムとしてお読みください。)
前提
どんな現象が起きたか
- サーバーのメモリは比較的余裕があるのに、処理中にカーネルが死ぬ
- カーネルをリセットし再実行すると、リセット前は実行できていた処理の部分でカーネルが死ぬ
- カーネル死のあと再びcsvファイルを読み込むと、以前は読み込めていたはずなのにencode errorなど読み込むことができなくなる(もちろんファイルに変更は加えていない)
講じた対策
コンテナ再起動、サーバー再起動
- 一応直る
- カーネル死自体は頻発するため、毎回行うのは面倒
キャッシュクリア
free -h
コマンドでメモリの空き状況を確認すると、buff/cache
のサイズが大きいことがあったsudo sysctl -w vm.drop_caches=3
を定期的に実行してキャッシュを削除した- 効果があったかは不明
ブラウザのjupyter notebookで巨大なファイルを読み込まない
jupyter nbconvert --execute --to {notebook_path} --inplace {notebook_path}
- これが一番対策としてよかった
- カーネル死が頻発する原因はサーバーではなくブラウザの問題な気がした
おわりに
カーネル死には相当苦しめられましたが、要因の切り分けが出来たことで快適に作業できるようになりました。
事例をググっても出てこなかったので備忘録として。