Chrononglyph

#7938

API検査から始まるweb改修

先週土曜日にサイトをアップデートしたのですが、
その後502エラーが頻発するとの報告を受け、いろいろ調べていました。
結果的にこれがここ1年低迷していたweb制作モチベに火をつけ、
気がつけばずーっと作業していました。


502(Bad Gateway)はサーバーが正常に応答していないというエラーで、
結論から言えばバックエンド側の処理が重過ぎてクラッシュしていたのが原因でした。
なぜいきなりそういう事態に陥ったのかというと、
ある計算式を正常に処理させるために一時的にキャッシュを生成する仕組みを外していたのですが、
それによって都度計算するようになり、これが高負荷の原因だったということですね。


これを検査するために「Laravel Telescope」という応答速度などを測るツールを導入したところ、
キャッシュなしの生成ではなんと45,000msもの時間がかかっていました。
キャッシュを導入したら300msまで減ったので実に150倍の短縮ということになります。
対象となっていた関数はループ内で使われることもあり、
しかもそれなりに重いデータベース処理を行うのでキャッシュは必須だったというわけですね。


ピクチャレ大会は基本的にフロントエンドキャッシュで表示の高速化を実現していましたが、
もはやこれだけでは不十分で、バックエンドキャッシュも積極的に使っていかなければならないと痛感しました。
いままでの作業環境ではそこにメスを入れるのはなかなか難しかったですが、
Laravel TelescopeがあればリクエストしたすべてのAPIが応答速度つきで一覧化されるため、
開発環境をいじっていればネックがどこにあるか簡単にわかります。
こういうツールがあるとやはりモチベは上がりますね。


ちなみに一時的にキャッシュを外して検証していた計算式はランクポイント絡みだったのですが、
数百〜20,000点に収まるはずのポイントが、ある変数が「1以下」になると指数関数的に増えていき、
10の19乗といった膨大な数になってしまうという不可思議なエラーが起きていました。
これ自体が処理を重くしていたわけではありませんが、
数学に疎いとこういうエラーも起こしがちで、今回は致命的にならなくて良かったなと。


ピクチャレ大会改修についてはやりたいことがまだまだ山ほどあるため、
このモチベーションをなんとか維持していきたいところです。



同じタグを含む記事(webサイト更新計画
#7938API検査から始まるweb改修』(2025/09/08
webサイト更新計画今日の出来事
#7654突貫工事の再整備計画』(2024/11/30
webサイト更新計画今日の出来事
#7565HP発展計画』(2024/09/02
webサイト更新計画今日の出来事
#6901原点回帰の試行錯誤』(2022/11/08
webサイト更新計画今日の出来事
#6858組み上げるための選択』(2022/09/26
javascriptwebサイト更新計画web制作
#6852土台の迷い』(2022/09/20
webサイト更新計画web制作
#6464目的を得た魚』(2021/08/28
webサイト更新作業webサイト更新計画web制作
#6116組織化構想』(2020/09/16
webサイト更新計画web制作
#6111共同事業の第一歩』(2020/09/11
webサイト更新計画行動力の問題web制作
#6026なだれ込む作業群』(2020/06/19
webサイト更新計画web制作
前後の記事