このページを正しく表示するにはJavascriptを有効にしてください。
robots.txt の置き忘れで1万円を失った話
このブログ運営費で気づいたら1万円も失っていたおはなし。
## 経緯
このブログは Google App Engine を使って動かしていて、毎月数百円くらいの費用で動かしてました。
3月に独自ドメインを買ったので少し維持費増えましたが、それでもコーヒー1杯分くらいの費用感に収まってました。
なので毎月のGCP利用費とか全然チェックしていなかったのですが、11月分の請求がきて料金チェックしてみたところ思ったより App Engine 利用費が膨れ上がってることに気がつきました。
なんと6月以降、月2000円近くの費用が発生しています。
App Engine は従量課金なのでCPUの稼働時間に応じて料金も増えていきます。
料金が増える一番わかりやすい理由はアクセス増による料金アップです。
慌ててアクセス解析を確認してみたのですが、どうやら炎上してアクセス数が100倍に!みたいなことはなかったです。
もうちょっと料金増加の手がかりはないかと支払いレポートページをいろいろ見てたのですが、SKU別に表示しても App Engine の CPU 時間が増えてる事しか分からなかったです。
ちなみに SKU はリソースの管理単位を表すっぽいです。
## 真犯人の特定
6月くらいから App Engine の CPU 利用が突然増えた原因はなんだろうと悩んでいたのですが、App Engine のダッシュボードに手がかりがありました。
直近24時間でよくリクエストされてるパスとその平均レスポンス時間が表になっています。
そこをよく見ると一番上に `/robots.txt` の文字が…。
(画像の表は改修後に取ったので /robots.txt ないです)
なんといろいろなクローラーが /robots.txt へ頻繁にアクセスし、CPU時間を消費していました。
頻繁といっても攻撃されているわけではなく数分に1回くらいの頻度で複数のボットが見に来てました。
ただのファイルへのアクセスであれば robots.txt でのCPU時間の消費は些細なのですが、悪いことにこのブログの作りのせいで余計に費用がかかっていました。
というのもこのブログ、SPA構成(一部 SSR)で作っていたため、存在しないパスへアクセスするとすべて Go のバックエンドが起動する仕組みになっていました。
ボットがrobots.txt にアクセスする度、バックエンドのインスタンスが動きページ全体を構築する無駄が発生していたわけです。
またなまじステータス200を返していたため Bot が解釈できずリトライを繰り返していた説もあります。
もう少し早く気づけばよかった…。
一応1日あたり$5超えたらそれ以上リクエスト処理しないよう制限はかけていたのですが、それ以下のラインで毎日ちょっとずつ費用がかかってるとは思わなかったです。
## robots.txt を追加
というわけで robots.txt を書いて静的ファイルとして配信するようにしました。
App Engine の場合静的ファイルを配信する機能もあるので、こちらに配置すればバックエンドサーバーを起動せずレスポンスを返す事ができます。
robots.txt を配置したところ無事料金が従来通りの費用感にもどってきました。
robots.txt 自体のリクエストも減ってるのでやはりリトライが走ってた模様です。
これで安心して寝れそうです。
従量課金のサービスは定期的に料金確認しましょう。