新規投稿に時間がかかる

2055 letters | 1544 views | コメントする

 WordPressの新規投稿で待ち時間がやたらあるので、タイムアウトとかでバグるんじゃないかとヒヤヒヤする。いろんなサイトに更新通知を送ってたらそりゃ投稿に時間がかかって当たり前だが、果たして本当に遅いのは更新通知のせいかって事に疑問を持った。たまに短い文章で投稿テストするとあっという間に完了するのに、長文をポストするとそれだけ時間がかかる。連携通知は長文だろうが短文だろうが、本文を送ってないんだからかかる時間は同じなわけで、待たされる理由は他にあるんだなとわかった。投稿と言っても、昔のムーバブルタイプとかと違って静的ページを生成してるわけじゃなく、ただデータベースに送信してるだけだから普通は一瞬で終わるはずだ。データベースの書き込みが終わった後に、自分で追加したプラグインのどれかが何か仕事をしていて、それは本文の長さに影響される物であると言うことまでは推定される。今のところ、本文の長さに影響を受けるプラグインと言ったら一つしかなくて、おそらくSimilar Postsの仕業だ。

 Similar Postsは大変優秀で、何年かぶりにエイプリルフールの話題を書いたら、その何年か前のエイプリルフールの記事を探し出して勝手にリンクを貼ってくれた。本文に含まれている単語とかをチェックして、関連する投稿を何件も探し出すんだから、そりゃよほど大量の処理をしてるに違いない。でも、関連する投稿の表示数を何件にしても、または検索範囲を変えてみたとしても表示速度は変わらない。つまり、読み出しの時は検索してないか、検索のキャッシュみたいな物を使って高速化している。その高速化を行うために、投稿時に本文をチェックしていて、短文ならすぐ終わるが、長文なら時間がかかるって事だろうな。それって、もうちょっと検索精度を落としても良いから高速化できないのかしら?

 って事でオプションの設定を見回して、怪しいのはbatch sizeという項目だ。サーバーに負荷がかかるから、問題があるときは小さくしろって書いてある。じゃあ逆に問題がなくて大きくすれば何かメリットはあるわけ?メリットがないなら小さいほど良いわけで、問題がなくても小さくしてサーバーの負荷を抑えれば良い。一体この項目はなんなの?って事でググったけど解決しなかった。どこを見ても、サーバーの負荷を抑えるために小さくすることだけ書いてて、小さくしたら負荷を抑える代わりに何があるか、大きくしたらどうなるかには触れられていない。つーか誰もわからないんだけどさ。たぶんソース見ればわかる人はわかるんだろうけど、あたしにはサーバーのことまではわからないと思うんだ。ただ、サーバーと言えどもコンピューターなわけで、少ないメモリーでやりくりすれば遅くなるし、大容量メモリーを使って高速化することもあるはずなんだよ。まぁ、メモリーがボトルネックの場合のみだけど。だので、唯一可能性のある、Similar Postsを高速化しそうな手段は、やっぱりこのオプションの数字を大きくして見ることだと思うんだ。

 でもそれって、レンタルサーバーに対して迷惑な行為じゃないかって事も考えられる。考えられるけど、逆に、少ないメモリーを指定してCPUを長時間使わせるのと、多めのメモリーを指定してCPUを短時間しか使わないのと、どっちが良いかって事にもなるんじゃなかろうか。いや、もちろんこのオプションで高速化できるという前提での話であって、メモリーはたっぷり使うし高速化もせずCPUパワーも浪費するって可能性もあり、それだったら数字を大きくしても何も良い事はない。

 もう一つというか、むしろ逆かも知れないって予想もあって、数字を大きくするとパワーを浪費する代わりに検索精度が上がり、数字を小さくすると精度は落ちるが軽くなるって可能性はないんだろうか。例えば長文を投稿しても最初の何百文字しか類似性をチェックしないという設定があれば、メモリーも節約だし速くなるしで、あたしだったらそういう設定項目を作るけどな。それがbatch sizeってオプションだろうか?

 ソース読んでわかる自信がないなら、この数字を上げ下げしてしばらく投稿テストしてみれば良いんじゃね?自分の作ってる部分の投稿テストもまだ終わってないから、いろいろ兼ねつつ、どんどん長文をポストして比べてみるか?

追記:これをbatch sizeいきなり10倍の1000にして投稿し、1分半ぐらいかかった。Echofonが反応を始めたのが1分経過後くらいだから、そこから30秒は自分で書いた連携処理にかかってるんだろう。

たぶん関連のある記事:

コメントは終了しています。