「Local by Flywheel」で急にサイトが重い・応答が無い時はAdminerでデータベースの最適化!

WordPress

ローカル環境「Local by Flywheel」で構築しているローカルサイトが、ある日突然とんでもなく重くなりました。

他のブログから移行した記事が4,800ありリライトしている最中なのですが、ある日突然、2~3記事ほど編集するとすぐに重くなり、ずっと読み込み状態でまったくレスポンスを返さなくなるのです。

Local by Flywheel自体は起動し、サイトも稼働している状態です。

PC自体を再起動すると一時的に解決されますが、また2~3記事ほど編集すると同じ状態になってしまい、作業が全く進まなくなりました。

検索してもわからず困っていたのですが、そういえば以前、別なローカル環境の「Instant WP」を使っていた時に、何らかのトラブルがデータベースのオーバーヘッドを最適化する事で解消された事を思い出しました。

結果、データベースを最適化する事で問題は解決しました。

これは「Local by Flywheel」固有の問題ではなく、WordPressなどでデータベースを使っている限り発生する問題のようです。

私のようにデータベースの知識が無い場合に、同じように困ってる人が居るかもしれないと思ったので、最適化の方法などをメモしておきます。

スポンサーリンク

オーバーヘッドとは?

オーバーヘッドとは、MySQLデータベースへの書き込みや削除、更新を繰り返しているとたまってくるゴミ(未使用領域)の事です。

オーバーヘッドが多くなると、MySQLデータベースの挙動が重くなり、クエリが遅くなるために、サイトの表示に時間がかかったり、応答不能になる事があります。

PCで、断片化されたデータを定期的に綺麗にする作業「デフラグ」が必要なように、オーバーヘッドを取り除くためにデータベースを最適化しなければなりません。

最適化の前にバックアップ

そこでデータベースを最適化するため、バックアップをダウンロードしておこうと「BackWPup」のジョブを開きました。

WordPressプラグイン「BackWPup」でバックアップ・設定と使い方
パソコン上のデータもそうですが、バックアップやセキュリティの部分てどうしても後回しにしがちですが、これは絶対にやっておかないと何かあった時に後悔する事になりかねません。やっぱり備えあれば憂いなし。あら...

するとやはりデータベースに問題があるようでバックアップにエラーが出ていました。

通常であれば数十秒で終わるデータベースのバックアップが、丸一日以上かかっても取れていません。

データベースのバックアップのエラー内容を見ると、やはりデータベースのレスポンスが無いようです。何度かログインしてもエラーになってるのがわかります。

この状態で、Adminerにログインしてみるも応答が無かったのでLocal by Flywheelを終了し、パソコンを再起動させました。

すると応答が復活したので、バックアップは少し前に保存した物に頼る事にして、まずは最適化を優先する事にしました。

AdminerでMySQLのデータベースを最適化する方法

ここでは、ローカル環境「Local by Flywheel」で使われているデータベース管理ツール「Adminer」でMySQLのデータベースを最適化する方法を紹介します。

Local by Flywheelを起動し、問題の発生しているローカルサイトの「DATABASE」をクリック、「ADMINER」をクリックしてログインします。

ログインすると、ローカルサイトのデータベースが表示されるので、一番上の□にチェックを入れます。すると、全てのテーブルを選択できます。

全てのテーブルにチェックを入れてから「最適化」をクリックします。

これで完了です。

最適化後

レスポンスが無くなっていたローカルサイトにログインすると、元のようにサクサクと動くようになってくれました。

また、バックアッププラグイン「BackWPup」でデータベースのバックアップをすぐに実行してみると、無事に数秒でバックアップが正常終了しました。

信じられないぐらい重たくなっていたのは、やっぱりデータベースに問題があったようです。

「phpMyAdmin」でオーバーヘッドを取り除く方法

また、本番環境であるさくらのレンタルサーバのデータベース管理ツールは「phpMyAdmin」なので、「phpMyAdmin」でオーバーヘッドを取り除く方法も紹介します。

さくらのレンタルサーバコントロールパネルにログインします。

アプリケーションの設定 > データベースの設定をクリック。

「管理ツール ログイン」をクリックし、phpMyAdminにログインします。

右の「データベース」から最適化したいサイトのデータベースを選択すると、右側の「オーバーヘッド」の欄に、オーバーヘッドがあるのが見つかりました。

テーブル一覧の下の方の「オーバーヘッドのあるテーブルを確認をする」をクリック。

するとオーバーヘッドのあるテーブルにチェックが入るので、
「チェックしたものを:」のプルダウンメニューから「テーブルを最適化する」をクリック。

最適化後

これで、オーバーヘッドが無くなり、最適化されました。

まとめ

Local by Flywheelに標準装備されている「ADMINER」は「phpMyAdmin」と違い、「オーバーヘッド」という項目が無く、どのテーブルが「オーバーヘッド」を起こしているのかまではわからなかったのですが、全てのテーブルを「最適化」する事で問題の解決になったので、それで良しとします。

サイトのレスポンスを上げるためには定期的に「最適化」を行った方が良さそうですね。

また、データベースの最適化をしてくれるプラグインもあるようですが、またプラグインを入れる事により重くなったり、他との相性で不具合が出るのも困ると思ったので、しばらくは定期的に手動で最適化をしていこうと思います。