Windowsサーバー + WordPress(MySQL)の再起動が非常に遅くなる原因と解決策


- Old Counter



あまり一般の人には関係無い話題ですが、備忘録のために記事にします。

筆者はWindowsサーバー使用の経験が長いので、このブログサイトのサーバーもWindowsサーバーを使用しています。
Linuxが嫌いだとか、どっちがパーフォーマンスが良いか、セキュリティーがどうとか、とか言うことではなく、経験上、Windowsサーバーのほうが初期設定や、何か問題が発生したときの解決が早い・・・とただ、自分でそう思っているので、そうしているだけです。

で、1年3ヶ月間くらい同じサーバーでこのサイトをインストールして運営しているのですが、最近、サーバーを再起動させるたびに、MySQL(WordPress)の再起動に時間が掛かります。1時間以上掛かります。その間、MySQLはウェブサーバーからアクセスできないので、一旦サーバーを再起動させると、1時間以上サイトがダウンします。

それほど頻繁に再起動するわけではなく、数ヶ月に1回なので、なるべく再起動させないようにしてきましたが、ついに最近、このサーバ-のハードディスクにScanDiskを実行させる必要性が出てきたので、他の3台のサーバーへのバックアップ(Warm Stand-by)を見直して、それらを最新の状態に更新し、テスト運用した後、本日、このブログサイトを別のサーバーに一時的に完全移動しました。

そこで、ScanDiskを問題のサーバーのハードディスクに実行し、その後、なぜ、MySQLの再起動に時間が掛かるのかをこのサーバーで調べてみることにしました。

まずやったことは、データベース(スキーマ)の削除と再構築。・・・でも、問題は解決しませんでした。

そこでネットをいろいろ調べてみると・・・

[14 Apr 2010 7:24] Dimitrij Pinneker
Hello,
i dont know why, but mysql scans the c:/windows/temp directory and the start delays when too many files are in the directory. My problem was that many php session files where in the directory and after deletion the problem was gone.
My system:
Windows Server 2003
Mysql 5.0.67

というエントリーがあり、「えっ!?」と思って、C:Windowstemp フォルダーを調べてみると、80万フィイル以上も一時ファイルがあるではないか!

 

ウェブサーバーからMySQLにPHPセッションが接続確立するたびに、「sess_ナントカ」というファイルがC:Windowstempに作成され、そのまま消えずに残るようです。

C:Windowstempのフォルダー内のファイルを全部消したら、MySQLの立ち上がりが早くなり、正常に戻りました。

結局、以下の内容のバッチファイルを作成し、タスク・スケジューラで一日一回実行し、不要になったPHPの一時ファイルなどをC:Windowstemp フォルダーから削除することにしました。

del C:WindowsTemp*.tmp
del C:WindowsTemp*.sqm
del C:WindowsTempsess_*

そういえば、昔、Windowsサーバー + Microsoft SQLサーバーの組み合わせでも、SQLサーバー(T-SQL)内でcmd.exeを実行すると、C:Windowstempに*.tmpファイルが溜まり、長い期間経過すると保存された一時ファイルの数が多くなり、複数サーバー構成の同期が出来なくなったことがあり、SQLサーバー内のジョブ・スケジューラーで毎日一回一時ファイル(*.tmp)を消していました。

この件は、同様な環境の人は少なく、役に立つ人はそんなに多くは無いと思いますが・・・
筆者としては、謎が一つ解けて、うれしい日となりました。



――<●>――
関連すると思われる記事: