リプライ数チェッカの負荷対策

対策すべき場所はWebではなく内部で動く巡回プログラム、Twitterとの通信に一番時間がかかっているのは当たり前なのですが、それでスレッド数が増えてメモリ使用量が大幅に増えて、途中で巡回プログラムが落ちるのは避けたい。

多重起動を防ぐ機構を組み込むのもありですが、結果的に一個のものが働かないと次の巡回処理対象が増えはじめてしまう。

近々行おうと思っている対策としては

  • 巡回プログラムを常に1個のみ常駐させる形式にしつつ全体のスレッド数を把握(つまりメモリ不足で落ちない)
  • アカウントを全てテストしてから巡回を開始する形式を、一定時間置きのテストに変更する
  • 取り込むツイートが無い状態になるまでページングを送っている状態を、取り込まないツイートが一部でも出て来たら止める方式にする(デメリットはほぼ皆無のはず?)

読み込み処理よりもツイート処理のほうが時間がかかっているので、ツイートするタスクをDBに溜め込みつつ、別のプロセスがツイートする仕組みにするのもありかもしれない。三番目の読み込むページングを一つ減らすのが大いに効果的(ほとんどの人は最後の巡回が1時間前で、1時間以内に200ツイートは不可能)かつ簡単に変更できると思うのでそれを実装しようかな。

負荷が既にある程度高いので、行わないといけないことは分かっているのだけれど、なかなか面倒。とりあえず色々と加減を見て進めていきたいのですが、まずは無料でやるにはリソースを割きすぎてるという意味でWeb側に広告をつけなければ。

カテゴリー: Web関連, プログラミング関連 タグ: パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です