0

pythonでクローラーコーディングを書いたのですが、しばしばoom killerにつながり、oom killerでLinuxがフリーズしてssh経由でOSに接続できなくなります。また、メモリ
使用量が 80% [memusage = (MemTotal - MeMFree - Buffers - Cached)/MeMTotal] を超えたら、クローラーを再起動する、メモリを保護するスクリプトを作成します。しかし、うまくいかないようです。だから私の質問は、どのように oom killer を回避するか、そして oom killer が発生した場合でも、操作システム全体のフリーズを回避する方法はありますか?

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
4

2 に答える 2

3

私が理解しているように、スワップパーティションがないか無効にしているので、スワップを追加してみてください。スワップがない場合、ダーティ ページをメモリから追い出す方法がなく、システムがフリーズする可能性があります。

于 2012-04-16T09:46:09.810 に答える
2

OOM キラーは、私にとって unix の最も奇妙な部分の 1 つであり、すべてのメモリを使用してプロセスを追跡することは決してないようです。

解決策は、Python プロセスが大量のメモリを消費しないようにすることです。メモリを増設することで、問題を一時的に軽減できます。

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

コードを見なければ、すべてのメモリがどこに行くのかを推測することしかできません。

于 2012-04-16T09:41:10.617 に答える