Ikeda->Weblog();

Ikedaの徒然雑記。

[メモ] lsyncd が同期してくれなくなった時は・・

| 0件のコメント

[メモ] が同期してくれなくなった時は・・お久しぶりですー、毎度毎度超不定期更新ですいません^^;

 

RHETOLO」の関連サービス「れとろ握り」や「レトロバッヂジェネレータ」、「あぷり握り」をガリガリ作りつつ、基幹システムの調整やら不具合対応やら新機能の構想やらで相変わらずバタバタしておりますが、このあたりのご紹介はまた後日、ということにしておいて。

 

以前、「lsyncd+rsyncでミラーリング」なる記事を書きましたが、あれからlsyncdには本当に色々なところで活躍してもらっています。今回のRHETOLOサーバでも使っているんですが、最近ディレクトリ同期が取れなくなる、という現象に悩まされていました。
ログを見ても特にエラーらしきものはなく、むしろ逆に「ファイルの変更が検知できていない」という感じ。
カーネルバージョンなどを疑っていましたが、どうやら原因は別のところにあったようです。。。


ずばり、原因は「ユーザマイページシステムを実装したこと」でした。

 

。。。っていうとマイページシステムが悪いように聞こえますね^^;

 

同期できない不具合の引き金を引いたのはマイページシステムでした。

 

いや違うな

 

悪いのはマイページでした( ̄▽ ̄)

 

 

・・・いい加減にマイページ開発者から首を締められそうなのでやめときますが、ともかく、マイページシステムを実装したあたりから同期がとれなくなっていたようです。

 

lsyncdがディレクトリ内の変更を検知するために使う「」には、「1ユーザが監視できる最大ディレクトリ数」というものがあり、デフォルトで8192に設定されています。そして、マイページシステムでは、レトロコードに紐付くアイコンや画像をアップロード・加工するため、大量のディレクトリを切っていたんです。

 

そう、この「大量のディレクトリ」を見張ろうとしたために、監視するディレクトリ数がMAXを超えてしまっていたのです。

 

ということで、原因がわかったら早速対処対処。

 

この「監視できる最大ディレクトリ数」はカーネルパラメータ fs.inotify.max_user_watches で設定されています。
なので、これを変更すれば万事OK!ですな!

とりあえず、、キリのいいとこで

# sysctl fs.inotify.max_user_watches = 32768

に設定しておきました。
マシン再起動時にも再設定されるよう、/etc/sysctl.conf にも

fs.inotify.max_user_watches = 32768

を追記しておくと後々ハッピーかと。
ちなみにsysctlコマンドを使わず、procファイルを更新する方法もあります。

# echo 32768 > /proc/sys/fs/inotify/max_user_watches

念のため lsyncd を再起動し、動作確認しておきましょう(^_^)b

 

ということで、今回はこの辺で。

あー、そうだlsyncdのバージョンが上がってて設定ファイル形式も変わってるんだこの辺も記事にしなきゃしなきゃしなきゃ・・・・

コメントを残す