現時点では再起動できません。機会があれば改めて報告します。数日はかかるでしょう。
心配すべきでしょうか?リソースをさらに割り当てる必要がある場合は問題ありません。
現時点では再起動できません。機会があれば改めて報告します。数日はかかるでしょう。
心配すべきでしょうか?リソースをさらに割り当てる必要がある場合は問題ありません。
はい、心配すべきです。
ほとんど余裕がなく、ディスクキャッシュの余地もほとんどありません。
ただし、追加のリソースを割り当てる前に、この非常に異常なメモリ使用量の原因を突き止める必要があります。
今はあまりできません。移動中です。今週末には戻って、何が起こっているのか必ず突き止めようと思います。アドバイスありがとうございます ![]()
どうやら、単に再起動が遅れていたことが原因だったようです。サーバーを再起動したところ、現在のところ数値は大幅に改善しました。
root@discourse:~# free
total used free shared buff/cache available
Mem: 3927308 977624 2246208 42880 703476 2646836
Swap: 2097148 0 2097148
同様の状況に再び陥った場合に役立つかもしれませんが、discourseにどのプロセスがメモリを使用しているかを尋ねることです。
https://example.com/admin/upgrade#/processes の出力は、RAM使用量の順に並べ替えられます。これは、コンテナ内で実行されているプロセスのみを表示すると思います。コマンドラインでは、次を使用できます。
ps aux | sort -nr -k 4 | head -22
または同様のコマンドを使用して、すべてのコンテナ内のプロセスを含むすべてのプロセスの使用状況を確認できます。
再起動でメモリ不足の問題が解決する場合、どこかに暴走プロセスがあり、問題が発生するまで(おそらくゆっくりと)増加していく可能性が高いです。
編集:RSS(RAM使用量)に基づいてプロセスを読み取ることについて言及していることに気づきました。これは役立つことがありますが、この場合は仮想メモリの使用量に関心があります。その場合、VSZ列(5列目)で並べ替える必要があります。
このDiscourseインスタンスは数年前に初めてセットアップされたため、おそらくスワップファイルチェックが行われる前でした。手動でこれらのコード行を適用し、スワップファイルが作成されました。ありがとうございます。
Dockerにスワップファイルを使用させるには、これを適用する必要がありますか?あるいは、この推奨事項は何のためにあるのですか?
vm.overcommit_memoryとは何かについて議論しているものを見つけましたが、なぜそのような変更が必要なのか理解できません。
これは、Discourse のアップグレードではなく、Redis の実行に関連しています。
それ以上のことだと思います。説明させてください。この推奨はRedisから来ており、Redisが推奨するのは、プロセスのフォークには多くの仮想メモリが必要であり、Redisはバックグラウンドセーブのためにフォークしますが、仮想メモリの要求は決して必要とされることはないからです。
これは多くのUnixアプリケーションに典型的なことです。フォークしますが、メモリ使用量を倍増させる必要はありません。多くのアプリケーションに典型的なため、また、これはすべてのコンテナ内のすべてのプロセスに影響を与えるカーネル設定であるため、仮想メモリが逼迫している場合に失敗を成功に変える可能性があります。
私たちが使用する多くの小型で安価なインスタンスでは、仮想メモリはしばしば逼迫しています。特にアップグレードや再構築中はそうです。
したがって、この設定を変更すると、特に仮想メモリへの要求を増加させる最近の変更があった場合、アップグレードが成功するか失敗するかに影響する可能性があります。
出荷時のカーネルは、満たすことができない割り当てを拒否します。この調整により、それらの割り当てを受け入れ、失敗を回避できるか、または割り当てが使用されるようになったときに後で発生する可能性があります。
RAMとスワップの合計が十分にあれば、この設定を変更する必要はありません。合計が大きくない場合、変更すると役立つ可能性があります。
freeコマンドは、設定されているスワップの量と使用されている量を示します。これらのコマンドを実行した直後から使用されていることがわかると思います。
これは、仮想メモリの量を増やすためです。(つまり、RAMとスワップの合計です。)RAMが不足すると、パフォーマンスの問題が発生し始めます。しかし、仮想メモリが不足すると、プロセスが起動に失敗したり、終了したり、強制終了されたりします。それはひどい状況になります。
RAMとディスクの両方が小さい私たちの場合、多くのスワップを追加できないかもしれませんが、2Gは良い最小値のようです。(もし16GのRAMがあれば、スワップは必要ないかもしれませんが、それはまた別の話です。問題は、物事が失敗することであり、その際に重要なのは合計です。)
なるほど。なんとなく理解できたと思いますが、それは非常に良い説明です。だから、私が行ったすべてのインストールクライアントのために作成したすべてのVMでそれを設定していたのですね。
discourse-setup がスワップを作成するときにこれらの設定を変更すべきかどうか疑問に思います。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.