メモリ不足を防ぐためにスロットルリベイクを遅らせる?

S3 CDN の URL を変更したため、45,000 件の投稿をリベイクしようとしていますが、メモリ不足でプロセスが終了してしまいます。

swapfile の設定について、こちらを読みました…

最初の 2 つのコマンドは問題なく実行できました…

  1. 空の swapfile を作成
    install -o root -g root -m 0600 /dev/null /swapfile

  2. ‘swapfile’ という名前の 2GB のファイルを書き出す
    dd if=/dev/zero of=/swapfile bs=1k count=2048k

しかし、mkswap /swapfile でエラーが発生しました…

mkswap エラー swapfile はマウントされています swapspace を作成しません

代わりにこちらを試しました…

swapoff /swapfile && rm /swapfile

そしてこのエラーが出ました…

swapoff: スーパーユーザーではありません

Digital Ocean の Droplet を使用しているので、必要な権限がないのだと思います。

これらの障害に直面し、代わりに未調理の投稿をリベイクしようと、次を実行しました…

rake posts:rebake_uncooked_posts

数百件、運が良ければ数千件は実行されますが、また終了してしまいます。昨日から監視していますが、半分しか完了していません。:wink:

リベイクコマンドをスロットリングして実行する方法はありますか?時間がかかっても構いません、一晩でも構いません、ただ失敗するのをやめさせたいだけです。

何か助けていただけると大変ありがたいです。

奇妙なことに、その間ずっと未調理のまま放置していたものを、書き込んでいる間に再度実行しました。友人たちと長い昼食に出かけ、戻ってきたら100%完了していました。スワップファイルがようやく機能し始めたのか、それとも単に利用率が低かったことによる偶然のタイミングなのかは分かりませんが…

ついに完了しました!

もし誰か答えを知っていれば、それは他の誰かや、次回の私の助けになるかもしれません。

Ubuntuの場合:

Sudo -i

Debianの場合:

Su -

「いいね!」 1

ありがとうございます。正しくできたかどうかわかりません。

それは正しく見えません。どの手順に従っていますか?

そして、なぜコンテナ内にスワップを作成しているのですか?スワップはコンテナ内ではなくホスト上に作成されるべきです。

なぜなら、私は自分が何をしているのかをわずかにしか知らないからです。:wink:

つまり、それは ubuntu: のベースレベルであり、ubuntu:/var/discourseubuntu-app:/var/www/discourse のレベルではないということですか?

リベイクのスロットリングについて何かアイデアはありますか?

「いいね!」 1

リベイクがスロットリングされているのを見たことがありません。非同期で、ジョブをキューに入れ、バックグラウンドで処理されます。

「いいね!」 1

OK、ありがとうございます。私のものは今のところリベイクが完了したので、幸運だったと思ってこれでいじくるのはやめておきますね。:smiley:

警告 :warning:: 本番サイトで何も考えずに行動しないでください。回復手段がないまま物事がうまくいかなくなる可能性が非常に高いです。

いいえ、ubuntu: レベルではありません。

スワップを作成しようとする前に ./launcher enter app を実行しましたか?もし実行したのなら、それがすべきではなかったことです。

サーバーに最初にログインするときはホスト上にいますが、app に入ると、コンテナ内で操作を実行しています。

スワップはホスト上に作成する必要があり、アプリケーションはコンテナ内に存在します。リベイクコマンドを実行するためにアクセスするのはこちら側です。

了解しました、ご指導ありがとうございます。

私たちのフォーラムは単なる友達のグループであり、バックアップも十分にあるので、一週間ほどサーバーを停止しても、GroupMeで我慢するだけです :wink:

これは、すでに /swapfile という名前のスワップファイルがあり、それが使用中であることを意味します。

それを大きくしたい場合は、コンテナを停止し、アンマウントしてから、その dd コマンドを使用してサイズを大きくし、次に mkswap コマンドを使用できます。

他の人がこれを読む場合、私が実行する方法は grep swap discourse-setup を実行し、そこにあるコマンドを確認することです。これは実行すべきことの、より簡単なバージョンです。

「いいね!」 3

私はしばしば戒めとなることがあります。

追加ありがとうございます。

「いいね!」 1

私はあなたについてはわかりませんが、長いリベイク処理中に繰り返しメモリ不足になりました。2 GBのスワップを作成したところ改善しましたが(より多くの投稿がリベイクされました)、しばらくするとまだOOMになりました。スワップを4 GBに増やしたところ、すべての投稿をリベイクできるようになりました。

私はこのガイド Create a swapfile for your Linux server 以外にはスワップファイルについて何も知りませんでしたが、ChatGPTは問題なくスワップを増やすのに十分な知識を持っていました。

「いいね!」 3

私にとっての問題の一つは、どの領域で何をする必要があるのかをよく把握できていないことです。コンテナの中か外か、あるいはアプリケーションの中か外か。私は良いメモを取り、再度使用する事柄については頭の中でショートカットを作るようにしています。しかし、理解し始めた途端にやるべきことが終わり、次の6ヶ月、12ヶ月、18ヶ月はもう触らないことになります。そうすると、また学び直さなければなりません。

システム管理者の人生の物語のようですね :joy:

私の解決策はメモを取り、ここでメタに簡単なハウツーを作成することです。

誰かが間違いや見落としを見つけた場合に編集できるように、これをウィキにします。そして、次に同じことをする必要があるとき…

「いいね!」 1