MovableTypeの検索タイムアウトを回避する
「CategorySearch」プラグインを利用して多岐に渡るカテゴリで検索するようなかなり複雑なMTサイトにて、検索タイムアウトが頻発する事態になった。
解決策
結論から言うと、mt-configへ環境変数「SearchThrottleSeconds」を600秒と長く設定することで解決した。
ついでに「SearchCacheTTL」で検索キャッシュも1時間(3600秒)で設定しておいた。
これはもうmt-configの定番設定にしておいていいレベル。
背景・過程
サイトが複雑になってきたため、当初はMTテンプレートかプラグインのパフォーマンスに問題があると思ったが(実際パフォーマンスは良くないと思うが)、パフォーマンス改善はテンプレート構造やらDBの調子やらを見直す必要がありそうだったが、正直そんな時間は無いと。
とにかくMTシステム画面剥き出しのエラー画面が出るのだけは避けたかったので、検索時間のパフォーマンス改善は二の次に、タイムアウトだけを回避するならば環境変数の設定だけでイケるんじゃないかと思い公式リファレンスを調べた。
探してみるとタイムアウトに効きそうなのが「HTTPTimeout」くらいしかその時は見当たらなかったので設定してみるも、タイムアウトは改善されず。
このままでは進展が無さそうなので、数年ぶりにはてなで質問してみたところ天の声を頂き、前述の「SearchThrottleSeconds」を設定したら見事に解決。
「SearchThrottleSeconds」はデフォでたった5秒なので、よほど検索パフォーマンスに自信が無ければ長めに延ばしておきましょう。
「SearchThrottleSeconds」は公式リファレンスの一覧だと
サイト検索、ブログ検索の連続実行する為に必要な間隔を設定します。
という説明があるわけでして、「連続実行」の「間隔」という説明だと、「連続して検索されて負荷がかかるのを避けるため、その間隔をあけるための設定」と読めるわけですよ。読み飛ばしていたわけですよ。
もう FUCK としか言いようないよね。
筆者について
- ゲームとジョジョを愛するファミッ子世代。好きな言葉は「機能美」。
公私ともにWebサービスを作る系男子。
最近の投稿
- 運用2017.03.03nginxのkusanagiにLet’sEncryptをかけてるとiOSで表示されない問題の解決
- 運用2016.07.22分かりにくい「クリエイティブコモンズ」をシンプルに言うと
- WordPress2016.07.12新しいWordPress「Calypso」を試した
- Design2016.03.09Win10アプリのデザインガイドラインが素晴らしい