mod_mrubyのメモリ問題をvalgrindで調査の上jemallocで改善

mod_mrubyはmrubyのmrb_stateをApacheのサーバプロセス上で使いまわすアーキテクチャをとっています。基本的にプロセスは起動しっぱなしなのですが、リクエストを大量に処理すると、プロセスのメモリがどんどん太っていく問題がありました。

これは、mruby-uv等でも報告されており、どうにか改善したいと思っていました。そこで、twitter上でいくつかmatzさんとやり取りしながら、valgrindでメモリのLEAKとHEAPを調査の上、mallocのフラグメントを疑い、jemallocでmallocをフックするとどのようにメモリ使用量が改善するかを実験しました。

続きを読む

mrubyからGrowthForecastにデータをポストするmruby-growthforecast書いた

mrubyを組み込んだウォシュレットの水の流量をグラフ化できる可能性が高くなってきました。

mrubyのC拡張をmrbgems化するサンプルで書いたmruby-redisに引き続き、mrubyをrubyで拡張するmrblibをmrbgems化するためのサンプルとしてmruby-growthforecastを書きました。

続きを読む

mod_mrubyの拡張ライブラリ開発のススメ

先日mod_mrubyでredisクラスを扱えるようにしました。

今回は、こういった新たなクラスを扱うためのmod_mruby用拡張ライブラリの作り方を紹介しようと思います。「mrubyで何か作ってみたいけど、どこから手出していいかわからない。」という人は、是非この記事を参考にmod_mrubyの拡張ライブラリを作って、Apacheに実行させて遊んでみてはどうでしょうか。

続きを読む

mod_mrubyとredisを使ってファイル単位のアクセス制御をしてみた

論文の休憩がてら、mod_mrubyとredisを使ってファイル単位のアクセス制御をしてみました。重たいメディアファイル等、同一ファイルに対する不特定多数クライアントからの同時接続数を制限したい場合など多々あると思います。それをmod_mrubyで簡単に実現しようという話です。

続きを読む