Help us understand the problem. What is going on with this article?

カバレッジエラーの対策[404編]

まえがき

株式会AncarのWebエンジニアをしている、keiと申します。
株式会Ancar ~Advent Calendar 2019~」 11日目を担当させていただきます。

弊社は安心・安全な移動体験を届けるをモットーに

中古車の個人間売買をオンラインで行うサービス
全国の中古車からお買い得な車を検索・比較できるサービス を展開しております。

当記事では、GoogleSearchConsoleにサイトマップを登録後、発生したカバレッジエラーに対しての対応について共有させていただきます。

おしながき

  • カバレッジエラーの現状把握
  • 404の調査結果
  • カバレッジエラー対策
    • その1
    • その2
  • 最終結果

カバレッジエラーの現状把握

上記サービスは、50万以上の車両詳細ページがあります。しかし、どんなにユーザーに役立つページを持っていたとしても、クローラーがページを見つけられなかったら、検索結果に表示されません。
ということで、より多くのページを検索結果に表示させたいと思い、サイトマップをGoogleSearchConsoleで登録しました。:point_down_tone1:送信したサイトマップの一部
 2019-12-11 0.38.32.png

ステータスが成功になり送信できました:clap:

が、、、喜んでるのも束の間
最大で251ページも404が見つかってしまいました:sob:
 2019-12-11 0.40.09.png
 2019-12-11 0.49.17.png
エラーがたくさん見つかってしまったので、次になぜクローラーが251ページも404を返してしまったのかを調査していきました。

404の調査結果

サーバーのアクセスログとDBを調査したところ、2019年の第41週において、中古車情報取得コマンドの実行中にデータの欠損が起きていたことが判明しました
そのため、 第42週のデータがcreateされる前にクローラーが欠損した出品ページにアクセスしエラーを吐いた。
中古車情報取得コマンドにおいて、41週目のデータ欠損が起こった一例

+---- +------+--------------+----------------------+---------------------+
| uid | week | car_make_id  |       created_at     |      updated_at     |                                              |
+-----+------+--------------+ ---------------------+---------------------+
|  1  |  40  |       7      |  2019-09-30 16:44:03 | 2019-09-30 22:25:10 |
+-----+------+--------------+----------------------+---------------------+
1 row in set, 1 warning (0.00 sec)
+---- +------+--------------+----------------------+---------------------+
| uid | week | car_make_id  |       created_at     |      updated_at     |                                              |
+-----+------+--------------+ ---------------------+---------------------+
|  1  |  42  |       7      |  2019-10-08 17:30:03 | 2019-10-08 21:55:10 |
+-----+------+--------------+----------------------+---------------------+
1 row in set, 1 warning (0.00 sec)

しかし、たとえ中古車取得コマンドで欠損が起こらなくても、 前の週にあった出品が今週なくなった という場合に同様のエラーが起こる可能性がある。
したがって、前週にあって今週には存在しない出品について、今週のサイトマップをSearch Consoleが読み込むまでの間はクローラーが存在しない出品ページにアクセスするという状況を作り出してはならない。

カバレッジエラー対策その1

対応策として行ったことは、前の週にあった出品が今週なくなった場合、掲載終了ページを作成することで404のレスポンスコードを返さないようにする方法である。
:point_down_tone1:実際に作成したページ
 2019-12-11 1.43.02.png

カバレッジエラー修正リクエスト後
GoogleSearchConsoleを見てみると、あれ?増えているではありませんか。。
 2019-12-11 1.53.00.png

カバレッジエラー対策その2

ということで、第2弾修正を行っていくことにしました。

エラー再調査

クローラーがサイトを訪れたタイミングとデータが作られた時間の比較
 2019-11-14 15 18 12

+---- +------+--------------+----------------------+---------------------+
| uid | week | car_make_id  |       created_at     |      updated_at     |                                              |
+-----+------+--------------+ ---------------------+---------------------+
|  4  |  41  |       5      |  2019-10-07 05:53:03 | 2019-10-07 12:43:15 |
+-----+------+--------------+----------------------+---------------------+
1 row in set, 1 warning (0.00 sec)
+---- +------+--------------+----------------------+---------------------+
| uid | week | car_make_id  |       created_at     |      updated_at     |                                              |
+-----+------+--------------+ ---------------------+---------------------+
|  4  |  45  |       5      |  2019-11-05 06:55:03 | 2019-11-06 07:25:10 |
+-----+------+--------------+----------------------+---------------------+
1 row in set, 1 warning (0.00 sec)

上記時刻を見てみると、クローラーが2019/11/04に対して、DBのcreateした時刻は2019/11/05である。
今回の場合は、41週目の次にデータが出来たのは45週目でした。

そのため、前週のデータが有り、かつ今週のデータが無い場合は掲載終了ページを表示するようにしていたが、先週だけのステータスだけだと今回みたいに過去にデータがあった場合、クローラーがきた時に404を返してしまうということが新たに判明した。

対策として、先週だけのステータスだけではなく、データが過去1週でも有り、かつ今週のデータが無い場合は掲載終了ページを表示するようにしました。

最終結果

カバレッジエラー対策その2後、再度Googleにクロールをリクエストすると、251ページもあったエラーが49ページまで減りました:clap:
 2019-12-11 2.12.47.png

残りの49ページはクロールが来るのを待っているという状況なので、404のカバレッジエラー が0件になる日もそう遠くはありません!!
 2019-12-11 2.15.24.png

kei1111
水処理プラントのエンジニアからwebエンジニアに転職し、日々精進中
ancar
自動車販売仲介、自動車個人間売買仲介、自動車整備、自動車情報発信を行うスタートアップ
https://ancar.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away