0

私のnginxには8つのプロセスがあり、それぞれが約150Mのメモリを消費します。

ときどき、私のnginxはこれのために殺されます(dmesg)</p>

合計 21228 ページキャッシュ ページ スワップ キャッシュ内の 50 ページ スワップ キャッシュ統計: 85 を追加、35 を削除、63/64 を検索 空きスワップ = 2031300kB 合計スワップ = 2031608kB 3407856 ページ RAM 3180034 ページ

メモリ不足: kill プロセス 16373 (nginx) スコア 5013 または子

私はそれをグーグルで検索しましたが、低メモリが不足していることが判明した ため、oom-killer がその仕事を開始します...

ここに私の質問があります:

  1. 16GBのメモリを取得しましたが、ロー メモリは800M (free -lm) しかありません。残りのメモリを使用するにはどうすればよいですか? グーグルは、パッチkernel-hugememを使用できると教えてくれますが、それは centos4 に対してのみであり、私のものはcentos5.2であるため...

  2. nginx プロセスが 150MB のメモリを使用するには多すぎますか? あなたたちはそのような問題に遭遇したことはありませんか?

  3. 低メモリは私を混乱させました.32ビットシステムはPAEなしで3GB以上のメモリを使用できます.では、なぜ低/高メモリを使用するのですか? カーネルのバグではありませんか?

4

1 に答える 1

0

OOM キラーがアクティブになるのを防ぐはずの無料スワップがたくさんあることに気付きましたが、何らかの理由でそうではありません。serverfault からのこの質問は、未使用のスワップを使用する OOM は、多くのメモリを必要とするドライバーが原因で、失敗した割り当てがカーネル モードであったことを意味することを示しています。これは、無料の HighMem が要求を満たすのに十分ではなかった理由も説明している可能性があります (カーネル モードでは、特定の領域からメモリを要求できます)。dmesg を少し遡って、バックトレースなどの手がかりがないかどうかを確認する必要があります。

質問の3番目の部分については、仮想アドレス空間がまだ32ビットであるのに物理アドレス空間を36ビットに拡張するため、PAEを使用する場合、HighMenとLowMemには違いがあります。潜在的な 64G の物理アドレスへのアクセスは、固定の 4G サブセットへのアクセスほど迅速に行うことができないため、カーネルはメモリを分割し、パフォーマンスが最も重要なものを「低」領域に保持しようとします。

于 2012-07-04T07:13:36.607 に答える