インターネット
 Computer >> コンピューター >  >> ネットワーキング >> インターネット

FirefoxでCookieデータベースが破損してログインが消える問題の原因と解決策

はじめに

Windowsマシンの1台で奇妙な問題が発生しました。このPCではFirefoxがデフォルトブラウザとして使われており、そのプロファイルは10年以上にわたって使い続けてきたものです。ある憂鬱な月曜日、ブラウザを起動して普段よく使うサイトにアクセスすると、ログイン状態が解除されていました。別のサイトでも同様。どうやら、すべてのログインセッションが消えてしまったようです。

幸い、私はあらゆるデータを多重バックアップしているため、FirefoxのCookieデータベースである「cookies.sqlite」ファイルをプロファイルに戻すだけで元通りになりました。ところが数日後、同じ問題が再発。興味を惹かれた私は、このあまり知られておらず資料も少ない問題を掘り下げてみることにしました。その結果、原因と思われるものと、有効な解決策にたどり着いたのです。

FirefoxでCookieデータベースが破損してログインが消える問題の原因と解決策

注:画像はwikipedia.orgより引用(GFDL 1.2ライセンス)。

問題の詳細

ネット上には関連情報がほとんどありませんでした。見つかったのは、Firefox 6頃の類似事例への言及と、Quantum(Firefox 57以降)に関するRedditの投稿くらいです。Cookieの復元方法を尋ねる質問は散見されますが、実際に何が起きていたのかの詳細はほとんどありません。大まかな共通点としては、通常のブラウジング中にCookieデータベースが破損するというものでした。ユーザーがそれに気づくのは次回ブラウザ起動時で、破損したデータベースは削除され、新しいものが作成されます。これらのファイルはFirefoxプロファイル内にある「cookies.sqlite」と「cookies.sqlite.bak」です。バックアップを持っていれば、上書きコピーするのが最も簡単な復元方法ですが、それだけでは「なぜ」の答えにはなりません。

では、なぜなのでしょうか。このケースで唯一「普通ではない」点は、約18か月間、一時ファイルやCookieの掃除を一切していなかったことです。普段なら四半期に一度ほど、数GB分のゴミを削除し、重要なもの以外のCookieをほぼ消去しています。FirefoxやChromeがゴミの蓄積をどう処理するのか興味があったため、あえて放置していたのです。

FirefoxでCookieデータベースが破損してログインが消える問題の原因と解決策

余談ですが、Chromeでは読み込んだサイトのファビコン表示が少し遅くなっていました。ただし動作の遅延やエラーといった異常はなく、実質的な問題はFirefoxのCookieだけでした。しかもそれは不定期に、明確な理由もなく発生します。溜まったゴミを掃除すれば改善するかもしれないと考えました。

解決策

そこで、必要なログイン情報を残して一時データとCookieを掃除してみました。するとFirefoxの動作がわずかに速くなったのです。小さな変化ですが、体感できるレベルの改善でした。Chromeのファビコンも即座に表示されるようになりました。本来は決定的であるべき動作がそうなっていないわけで、ブラウザは一時データの緩やかな蓄積の影響を確実に受けているのです。これ自体、興味深い発見です。

FirefoxでCookieデータベースが破損してログインが消える問題の原因と解決策

Firefoxについては、この記事を書くまで2か月ほどシステムを運用して様子を見ました。約2週間の間に3回Cookieデータベースの破損が発生していましたが、クリーンアップ後は一切静かになっています。この方法で問題が解決したと確信しています。さらに、技術的にもかなり筋の良い推測ができています。

Firefoxのcookies.sqliteファイルにはサイズ上限があります。正確な値はシステムによって異なるようですが、一般的なのは1,024KB、ときどき2,048KBです。この上限が、データベースに登録できるCookieの数も左右します。上限に達すると、Firefoxはcookies.sqliteを破損していると判断して削除してしまうのです。古いCookieや使用頻度の低いCookieを賢く削除したり、データベースのサイズを拡張したりする仕組みは存在しません。

これは推測ですが、かなり確度が高いと考えています。そして解決策は、ブラウザデータをときどき掃除することです。私はヘビーユーザーなので、Cookieは数百、場合によっては数千個溜まっていました。一方、本当に意味のあるものは数十個程度です。年に1回、あるいは8か月に1回程度の掃除が現実的なメンテナンス間隔と言えるでしょう。

まとめ

根拠の曖昧な「おまじない」的な記事は好きではありません。推測は嫌いです。ソフトウェアの問題は決定的であるべきで、簡単に再現・検証できるのが理想だからです。しかし、タイミングとイベントの順序の組み合わせで顕在化する競合状態(race condition)のように、こうした問題は解決の仕組みが明白でも再現が難しいものです。

いずれにせよ、Firefoxを使っていてログインセッション(Cookie)が消えてしまう場合は、まずバックアップから復元し(バックアップは必ず取っておきましょう)、その後、不要なデータを整理して、常用サイトのログインに必要な最低限のCookieだけを残すことをおすすめします。手動での掃除でもメンテナンスツールでも構いませんが、ツールは扱いに癖があることもあります。それはまた別の話です。今日はここまで。「当たり前だろ」と言わないでください。実際はそうでもないのですから。それではまた。

それでは、よいブラウジングを。

  1. Firefox 4 vs Internet Explorer 9 徹底比較レビュー

    さあ、覚悟してください!こんな対決記事を書くことになるとは思いもしませんでしたが、いざ始めましょう。あらゆるサプライズは起こりうるものです。Microsoftが一流の高性能ブラウザを届けてくることも、その一つです。社内での厳しい指導と減給が効いたのでしょうか。さて数日前、Firefox 4ベータの詳細なプレビューが公開され、その翌日にはInternet Explorer 9ベータが登場しました。どちらも非常に期待できる製品です。Firefox 4は長い歴史を持つ優れたブラウザの系譜を受け継ぎ、従来の精神を保ちながらさらに進化を遂げています。一方、Internet Explorer 9は革命です

  2. Firefox 3.1 Beta 3のメモリ使用量を徹底検証 ― LinuxとWindowsでの実測レポート

    先日、Firefox 3.1 Beta 3をレビューしました。JavaScriptパフォーマンスの大幅な向上、使い勝手とプライバシーに関する新機能、将来のHTMLマルチメディア要素への対応など、非常に魅力的なリリースです。ところが、あの記事ではメモリ使用量については一切触れていませんでした。 それには、ちゃんとした理由があります。 アプリケーションのメモリ使用量を正確に測定するのは、実は非常に難しい作業です。せいぜい得られるのは「推測」や「目安」程度で、しかも主観的かつ限られた要因に基づくもので、ほとんど役に立たないことも珍しくありません。多くの人は、タスクマネージャー、Process Exp