mod_luaを使い倒すためにリソース取得するLuaライブラリを作った

前回記事(Apache2.4.1のmod_luaをいきなり弄ってフックできる箇所を増やしてみたよ)と前々回記事(Apache 2.4.1のmod_luaでApacheに介入する(mod_rewriteの終焉?))とmod_luaがあればこれまで敷居の高かったApacheモジュール開発も人気が出てくるのではないかと思いだしている。それを促していくためにも、今回は少し使えそうなLuaのライブラリを作った。ライブラリの実装はC言語。C言語のライブラリと簡単に連携できるところもLuaの強みである。

続きを読む

Apache2.4.1のmod_luaをいきなり弄ってフックできる箇所を増やしてみたよ

mod_lua、色々触ってみた所、すごい簡単にモジュールっぽい動きが実装できて、可読性も良くて便利。

しかし、個人的にモジュール実装する時に良く使うのは、アクセスログ出力時のフック箇所(ap_hook_log_transaction)である。例えば、リクエスト毎にレスポンス処理前の最終段階であるap_hook_fixupsの段階でrusage()等でリソースの計測始めて、ap_hook_log_transactionの段階で差分を算出し、動的コンテンツ実行に利用したCPU使用時間等を計測する、といった使い方ができる。また、処理始めでカウンターを上げておいて、処理終わってログ書き込む段階でカウンター下げるといった使い方にもap_hook_log_transactionでのフックは便利だったりする。細かい話、コンテンツ処理するhandlerの前後で計ってもいいんだけど、hookに関数登録した方が分かりやすい。

しかし、mod_luaはそこでフックすることができない。これは面白くない。

だったら追加してやろう。ということで実装した。以下パッチ。

続きを読む

Apache 2.4.1のmod_luaでApacheに介入する(mod_rewriteの終焉?)

といいつつも、そこまで大したことはしていない。

luaという高速に動作する組み込み系のスクリプト言語で遊んでみたかったのと、それだったmod_luaで遊んでみればいいなと思っただけである。で、実際にmod_luaをコンパイルして遊んでみた。コンパイルオプションは以下。

./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --enable-modules=all --enable-mods-shared=all --enable-mpms-shared='prefork worker event' --enable-lua --enable-sed

後ろの方に–enable-sedとかあるが気にしない。

続きを読む