@hasi_t です。 http://klabgames.tech.blog.jp.klab.com/archives/1072352628.html の続きです。
order by reserved_at asc
を削り、数値比較でソートするように修正、getEvent呼出を削除sudo yum install nginx
で適当にインストールして実行ユーザを変えたのですが、
nginxのテンポラリディレクトリの権限を付けておらず、
/admin/api/reports/events/:id/sales
や /admin/api/reports/sales
のようにレスポンスデータが大きい場合のみエラーが発生する、
という問題を起こしてしまいました。
nginxのエラーログを見たら Permission denied
が出まくってるのですぐ気づきそうなものだったのですが、
全く見ておらず、それに気づかず16時までfailし続けていました。
動作が遅いからfailしているのでは?とか言っていろいろ修正していたのですが、
ブラウザでダウンロードしようとするとネットワークエラーになり、
ログを見たらエラーが出ているという状況でした。
ベンチマーカのログを見てちゃんと確認したらすぐ分かったことで、深く反省していますorz
予約/キャンセルAPI全体のロック を取りました。
これによってSQLのFOR UPDATEは不要になります。
常日頃から並列処理やロックは扱えないと公言して憚らないので、自分としては普段どおりです。(自慢できることではない)
結果的にはダブルブッキングやデッドロックといった様々な問題が未然に防げたようなので良かったです。
反省点は多いですが、結果的には良かったので良かったです。
準備してもらったレポートツールはとても優秀で楽しくチューニングできました。
昨年作問を担当したので運営側の大変さはとてもわかるのですが、 特にベンチマーカがどんな実装だったのかと気になっています。
これを作るのはめちゃくちゃ大変だったのでは…
本選を楽しみにしています!
KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。
合わせて読みたい
KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。