Running Ruby on Solaris (RubyKaigi 2015, 12/Dec/2015)ngotogenome
4月からペパボで働いているわけですが、前々から噂できいていたメモリリークの問題について、ペパボではわりと大規模かつ高負荷な環境でngx_mrubyを使ってくれているのでその環境を見ながらメモリリークを改善してみました。 状況的には、16時間動かしていると導入している環境のngx_mrubyを組み込んだnginxが1GBぐらいメタボっていました。 実装や幾つかの調査情報をみつつ、以下の2点においてメモリリークが発生していました。 mrubyが例外をあげて5xx系のエラーコードを返す時 mruby_set系のディレクティブを使っている時 上記のそれぞれにおいて、C側で生成したオブジェクトをarenaに登録したまま、不要になったにも関わらずarenaからオブジェクトを除外してGCさせるように処理できていなかった事が問題でした。 これらを、ほぼ同等の改修によってmrb_gc_arena_save(
Riak CS や Amazon S3 に置いたファイルを非公開にした状態で,Nginx を介した場合にのみ,アクセス元のユーザは Access Key ID も Secret Access Key も使用せずに,非公開設定のファイルを取得します. 構成 Nginx 側で,Amazon S3 API の Authorization ヘッダを計算/追加して,プロキシします. 環境準備 # git clone https://github.com/cubicdaiya/mruby_nginx_module.git # cd mruby_nginx_module # git submodule update --init # cd mruby # make # cd # git clone https://github.com/simpl/ngx_devel_kit.git # curl -O
Latest 西沢さんAPI 2013/09/27 22:31:22 さくらVPSのOS入れ替え 2013/08/30 21:33:22 CentOS6.4上にnginx+spawn-fcgi+PHP5.4をyumで 2013/03/30 14:27:01 nanocメモ2 2013/03/23 04:19:29 メモ 2013/03/17 18:17:51 Home 2012/04/28 00:30:31 西沢さんAPI 最高にやばいAPIをTwitterで見かけてランダムでハヤテのごとく!の西沢さん画像が出てくる何かを作った あと、「西沢さん」て単語が入ってるツイートを必ずふぁぼってくる方にお願いされたのも理由の一つ http://www.nikirom.com/nishizawasan ngx_mrubyのインストール 前にサーバ入れなおした時にngx_mruby入れてたから、軽くス
http://mrubysearch.ongaeshi.me/ RubyKokubanを作るにあたってmrubyのソースやmgem(mrubyのRubyGemsみたいなやつ)に登録されたソースコードを簡単に読めるようにしたいなあ、と思い作ってみました。 一日一回レポジトリを最新に更新してインデックスの再構築を行っています。新しいmgemが追加された時は今の所手動で対応しています(そのうち自動化したい所です)。 自分が追加した(もしくは検索したい)mgemが追加されていない!って人はリクエスト頂ければ追加するので教えて下さい。 mgemじゃなくてもmrubyに関係がありそうなソースコードでしたら追加しますので是非。 ※ 個人サイトのため突然停止したりするかもしれません、ご了承下さい。 使い方の例1 - "!"付きのメソッドはどうやってバインドするの? 例えばgsub!のような!マークのついた
<< 2013/07/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1. mrubyのmrb_gc_arena_save()/mrb_gc_arena_restore()の使い方 >> _ mrubyのmrb_gc_arena_save()/mrb_gc_arena_restore()の使い方 Twitterで質問を受けたので、 mrubyのmrb_gc_arena_save()/mrb_gc_arena_restore()の使い方 という解説を行った。が、1つ140文字のTwitterでの解説にはどうしても無理があるので、 こっちでまとめることにする。 まずは、Twitterの発言*1はこんな感じ。 arenaの目的。利用中のオブジェクトはGCに回収されないよう保護
すずかぜ@スト6 @suzukaze_jp @matsumotory mrubyで質問です。mrb_gc_arena_save(),mrb_gc_arena_restore()でGCに回収されないようにする?どういう時に使用すればいいでしょうか? 2013-07-31 00:48:15
mrb_value では,構造体と共用体を複合させることで,複数種類のサブクラスに共通のデータフォーマットを与えています。MRB_NAN_BOXING が偽の場合(not MRB_NAN_BOXING)について説明します。 図1は mrb_value の PIM をちょっと整理しなおしています。mrb_value のサブクラスの中には値となる属性を持つものがあります。たとえば,MRB_TT_FLOAT (浮動小数点数) , MRB_TT_VOIDP (ポインタ), MRB_TT_FIXNUM (整数) , MRB_TT_SYMBOL (シンボル) です。他のサブクラスも値を持つ場合がありますし,持たない場合もあるようです。 まず mrb_value は型を1つだけ持ちます。この場合の型というのは,例の接頭辞 MRB_TT で始まる25種類の列挙型で表される情報のことです。mrb_value
ngx_mrubyに対しても、mod_mrubyで実装していたような高速化アーキテクチャ(これとかこれ)を実装することができたので、どれくらいのパフォーマンスがでるのかをngx_mrubyとmod_mrubyで比較してみました。 mod_mrubyとngx_mrubyのインストール gitからそれぞれのコードを落としてきて、以下のようにコンパイルしました。 git clone git://github.com/matsumoto-r/mod_mruby.git cd mod_mruby git submodule init git submodule update cd mruby git checkout master rake cd .. ./configure make sudo make install git clone git://github.com/matsumoto-r/
{{toc}} mrubyを利用する include/mruby.hとinclude/mruby/compile.hをインクルードする mrb_open()を呼び出してmrb_stateを作成する mrb_load_xxx()を呼び出してRubyプログラムをロードする(ロードとなっているが実行まで行われる。独自のクラス定義などの準備作業はロードの前に行っておくこと)。ファイルを読み込む場合はmrb_load_file()、文字列を読み込む場合はmrb_load_string()を使う mrb_close()を呼び出してmrb_stateを破棄する mrubyで使われるデータ型 mrb_stateRiteVMの情報を格納する型 mrb_valuemrubyのオブジェクトを示す型。CRubyでいうVALUE mrb_callinfoメソッド呼び出しの情報を格納する型 mrb_value操作AP
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く