Sidekiq が解放しないため、復元できません

ECS で RDS を使用してサイトを実行しています。データベースを復元しようとしています(Restore failed `entity2char already exists' RDS Postgres 13.7 - #7 by RGJ に記載されているとおり)。

この時点での問題は、sidekiq を待機して一時停止しているため、バックアップが開始されないことです。60 秒待機していると表示されますが、60 分待っても待機が終了しません。

そこで、復元前にデータベースを削除、作成、移行することにしました(前回はこれでうまくいったと確信しています)。しかし、データベースを開いているタスクが 6 つあるため、まだデータベースを削除できません。

SELECT application_name,client_addr FROM pg_stat_activity;

これは次のように表示されます(アクティブな接続を持つ 6 つの sidekiq があります)。

 psql                                  | 10.3.2.155
 PostgreSQL JDBC Driver                | 127.0.0.1
                                       | 127.0.0.1
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.3.2.155
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.155
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.34
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.155
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.155
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.34

これらのアドレスの 1 つは ECS で、もう 1 つは EC2 で開始したコンテナです。両方のコンテナで sv stop unicorn を実行しましたが、これは他のコンテキストではデータベースを削除するのに十分でした。

ああ。そして、EC2 のコンテナを停止しました。そのため、シャットダウン時に接続を閉じずにハングしているだけなのでしょうか?データベースを再起動する必要があるかもしれません。(データベースを再起動すると、これらの接続は停止し、シャットダウンされたユニコーンからのアイドル接続のみが表示されるようになりました。)

sidekiq を停止するにはどうすればよいですか?redis に入ってすべてをクリアしますか?(以前にやったことがあり、再度 Google で調べることができます。)

sidekiq を実行しているすべてのインスタンス(コンテナ、ユニコーン)を停止するだけで済みます。

そうだろうと思ったのですが、sidekiq を実行しているコンテナをシャットダウンした後でも、postgres にはアクティブな接続が表示されていました。同様に、ECS インスタンスで sv stop unicorn を実行した後でも、postgres にはアクティブな接続が表示されていました。

RDS サーバーを再起動し、EC2 のコンテナを起動しました(ECS のインスタンスはリストアに必要なディスク容量が不足しています)。sv stop unicorn を実行してから、データベースをドロップ、作成、リストアし、現在リストアを試みています。

ご協力いただき、誠にありがとうございました。感謝いたします。

「いいね!」 1