久々のGrowlネタ。LimeChat2からGrowl for Windowsに通知する方法ではTwitterIrcGateway[1]とLimeChat2、Growl for Windowsを連携させてデスクトップ上にTwitterのタイムラインを通知する方法をご紹介しましたが、最近になってちょっと問題というか、弊害が起こり始めています。
それがLimeChat2が大量にマクロをリクエストすると、Growlが処理しきれずプロセスがたまっていくというもの。タスクマネージャをみるとずらーっと「growlnotify.exe」が常駐したままになっています。その数は多いときで400個以上。1つあたり平均で8MBほどメモリを使用しているため、放っておくと3GB以上メモリに常駐し続けます。これではシステムが重くなるのも当たり前[2]。仕方がないのでタスクスケジューラに以下のコマンドを書いたバッチファイルを1時間に1度実行させるようにしています。
taskkill /IM growlnotify.exe /F
プロセスに常駐したままになっているgrowlnotify.exeを強制的に終了[3]させています。現在は1時間にgrowlnotify.exeが5,000回程度呼び出されており、一回のバッチファイル実行で20個程度が強制終了されています。
大量にマクロを実行しているのはなんと言っても最近のTIGがUserStreamに対応してくれたこと。Twitterのサービス利用規約でスクレーピングが禁止されている以上、出来る限りリアルタイムでタイムラインを取得するにはStreaming APIを利用するしかありません。夜間になると1秒間に10個以上のTweetが流れて来、その内のいくつかがマクロをリクエストし、デスクトップに通知する…考えてみなくてもGrowlに負担がかかるのは必然ですね。いやはやTIGとStreaming APIさまさまです[4]。
- 次期バージョンからTweetIrcGatewayに改名予定 [back]
- メイン機の自作パソコンが12GBのメモリを90%使い切るの原因もよくよく調べてみたらgrowlnotify.exeが大量常駐していました [back]
- 常駐し続けているgrowlnotify.exeはほとんどがGrowlに通知を渡せないまま応答無しになっており、強制終了させてもGrowl本体やLimeChatが落ちることはありません [back]
- マクロ機能を無効にする気はありません。だってデスクトップに次々にタイムラインが流れてくるのが楽しくてしょうがないんですもの [back]