- patch作成
diff -u /path/to/file.orig /path/to/file > /path/to/file.patch
- patch適応
cd /path/to/patch -Np0 -i file.patch
「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。
diff -u /path/to/file.orig /path/to/file > /path/to/file.patch
cd /path/to/patch -Np0 -i file.patch
[Warning]
より効率のよい同時接続数制限モジュールができたので、上記のページを参考にして下さい。
[/Warning]
[note]
[/note]
またapacheモジュールを作ってみた。
今回は、IP単位やファイル単位で同時接続数制限を実現するapacheモジュールであるmod_limitipconnを作り替えた。
ほぼ丸々書き換えなので、patchにしても意味なかった。
まずは、mod_limitipconnの下記問題点を改善した。
改善による機能としては、
である。
ライブラリ等を簡単に入れられない環境などで、zabbix-agentを動かすためにstatic-link版のバイナリを作成できる。
./configure --enable-static --enable-agent --prefix=/usr/local/zabbix
説明するまでもない、次世代の統合監視を担うオープンソースの代表格であるZabbix。ちょっと調査をする必要があったので、色々APIを試したりしていたときに発見した現象。
同時にZabbixAPIを叩きに行ったさいに、apacheとMySQLが高負荷状態に。その状態でWEBブラウザから他のクライアントがログインを試みてもタイムアウトになる。なんだーなんだーと思って調査してみたら、ログイン時にログを残す時のログID取得処理でバグがあった。
調査の内容は以下。
例えば、APIのクライアントから同時にZabbixAPIを叩きにいくと(zabbix-host-status-test.plは自分自身の監視を有効化したり無効化したりするスクリプト)
./zabbix-host-status-test.pl -m on & ./zabbix-host-status-test.pl -m on &
すると、API側のapache+mysqlがループに入り高負荷になる。
■ realpath_for_fs() [Download]
・シンボリックリンクを含んだ絶対パスを安全にrealpathに変換
しばしば、シンボリックリンクを含んだ絶対パスをシンボリックリンクを含まない絶対パス(realpath)としてみたい場合がある。
特に、apacheモジュールを実装する上で、apacheはシンボリックリンクをrealpathに解析した上で、Directiveを見てくれないため、realpathでDirectiveを書いていても、シンボリックリンク経由でアクセスがあった場合は、Direvtiveのパスは無視される。
パスのBaseネームがシンボリックリンクであれば、symlinksコマンド等で調べることができるが、絶対パスの途中にシンボリックリンクが含まれている場合はそう簡単には行かない。