2012-04-16 50 views
0

私はPythonでクローラコーディングを書いていますが、oom killer、oom killerがLinuxをフリーズさせ、ssh経由でosに接続できません。メモリを保護するためのスクリプトも書いています。メモリ
の使用量が80%を超えていれば[memusage =(MemTotal - MeMFree - Buffers - Cached)/ MeMTotal]、再起動クローラ。しかし、それは動作していないようです。だから私の質問は、どのようにオム殺人を避けるために、そしてオム殺人が起こっても、何か操作方法を凍らないようにする方法があるのですか?oom killerをPythonでコーディングするのを避けるには

oom-killerが起こると、画面に以下の情報が表示されます。

ve:okB present:16256kB Pages_scanned:173280531 all_unreclaimable? yes 
[9132.468227] lowmem_reserve[]: 0 829 829 829 
[9132.468403]Normal free:3628kB min:3648kB low:4568kB high:5472kB active:614280kB inactive:22508kB present:849376kB pages_scanned:1415839762 all_unreclaimable? yes 
[9132.468713] lowmem_reserve[]: 0 0 0 0 
[9132.468883]DMA: 0.4kB 1.8kB 1*16kB 1,32kB 0*64kB 0*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3384kB 
[9132.469286]Normal:7.4kB 5*8kB 0*16kB 1*32kB 1*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3620kB 
[9132.469674]Swap cache:add 0, delete 0, find 0/0, race 0+0 
[9132.469825]Frees swap = 0kB 
[9132.469905]Total swap = 0kB 
[9132.469986]Free swap:  0kB 
[9132.472289]218112 pages of RAM 
[9132.472386]0 pages of HIGHMEM 
[9132.472469]44668 reserved pages 
[9132.472553]5732 pages shared 
[9132.472634]0 pages swap cached 
[9132.472760]0 pages dirty 
[9132.472837]0 pages writeback 
[9132.472919]874 pages mapped 
[9132.472999]3343 pages slab 
[9132.473082]392 pages pagetables 
+1

マシンのメモリが非常に少なくなっているか、プログラムでメモリリークが発生している必要があります。それを修正すれば、この質問をする必要はありません。 – Dikei

答えて

2

OOMキラーは私にはUNIXの奇妙な部品の一つであり、すべてのメモリと処理後に行くように見えることはありません。

解決策は、あなたのPythonプロセスがあまりにも多くのメモリを消費しないようにすることです。メモリを増設することで、一時的に問題を緩和することができます。

しかし、長期的な解決策は、すべてのメモリを食べないようにクローラを作成することです。

コードが表示されていないと、すべてのメモリがどこにあるのかわかりません。

+0

OOMの殺人犯は、あなたが本当に記憶を吸っている場合にのみ蹴られます。あなたはあなたのアプリにする必要がありますか? –

3

スワップパーティションがない、または使用不可になっていることを理解しているので、スワップを追加してみてください。 スワップがないと、メモリからダーティページを削除する方法がなく、システムがフリーズする可能性があります。

関連する問題