AWS EC2の本番環境だけがバグったときの対処法の備忘録

HAKUSHIというサイトを開発していますが、ローカル環境でも、ラズパイの開発環境でも起きなかったバグがAWS EC2にて確認され、死ぬほど焦って調査したのでその備忘録を書きます。

バグの症状

http://hakushi.biz/question_form

にあるフォームの投稿ボタンを押しても、画面が切り替わらずにDBに挿入されないというもの
この症状は、ローカルでも開発環境でも再現しなかった。

バグの原因

inputタグの中のnameの前に全角スペースが入っていることが原因

もう一つ直接的かわからないが、このバグを対処したのちに新たに

postgres_db | 2022-05-29 12:09:58.488 UTC [35] ERROR: duplicate key value violates unique constraint "register_question_pkey"
postgres_db | 2022-05-29 12:09:58.488 UTC [35] DETAIL: Key (id)=(6) already exists.

というエラーが出たために

を参考にして、

SELECT * FROM テーブル名_id_seq;

で確認して、

SELECT setval('テーブル名_id_seq', (SELECT MAX(id) FROM テーブル名));

で更新をかけたら、エラーなく動き始めた。

実は、少し前に使ってもらったユーザーから口コミの返信するとエラーが起きるという報告を受けていて、調査したが原因不明で終わったがおそらくこれだろう。

正直DBの運用に関しては素人なのだが、エラーが起きたら真っ先にココを疑った方がいいのかも知れない。

対策

今回エラーを調査して、原因発覚につながったのは、
フォームのrequest.POSTを直接print文でみたところ、
本来あるべき 'question'のデータが送られてないことを発見した時であった。

なので、やはりバリデーション機能を入れるべきで、

  1. データ自体が送られていること

  2. 内容が適切かどうか

のバリデーションをかけることによって対策しようと思う。

というわけで、HAKUSHIのレポジトリ のissueを追加したのでやらないとなぁ

あとがき

正直死ぬほど焦りました。
こんなことあるのか!?って何回も思いました。
バックアップはとってあるものの、本番環境のDBコンテナ吹き飛ばしながら原因調査するのはやはり怖かったです(笑)

やはりAWS特有のバグがあるんだなぁとしみじみ思いました。
ラズパイで開発サーバーを代用していますが、これから先、
もしHAKUSHIのユーザーが増えた時にこのようなバグと対処は一般的には許されない気がします、、、

  1. 同一環境の開発用サーバーを用意すること

  2. 障害が起きた際には、ドメインを止める訓練をしておくこと

(1)はお金がないのでできませんが、
(2)あたりはちょっと訓練しとかないといけないと思いました。

にしても、amazon Linuxのvimには救われました。
だってクリップボードからのコピペに対応してるんだもの。
これ対応してなかったら、ヤバかった、、、

現在は復旧して、元気に口コミ投稿しているので
ぜひ、私が身を削って対応した口コミ機能利用してくれたら嬉しいです!

そんなHAKUSHIのURLはこちら

この記事が気に入ったらサポートをしてみませんか?