タグ

ブックマーク / blog.matsumoto-r.jp (11)

  • 人間とウェブの未来 - OSvのような環境でもサクっと動くmrubyのWebサーバ作った

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 OSvがとても面白いので色々いじっていると、結果的にmruby-simplehttpserverというWebサーバをmrubyで動かすためのmrubyモジュールができてしまいました。 これは、OSvのようにライブラリをがんがん入れられないような環境でも、とりあえずSocketとIOがあれば動くシンプルなWebサーバを動かすためのmrubyモジュールです。 そもそもOSvって何?という方はこの辺りを見るか、syuu1228さんに聞くのが良いと思います。簡単に言うと、これからの時代、ハイパーバイザにがんがん仮想マシンをデプロイする際に、その仮想マシンにリッチなOSがあまり必要ないケースって結構あって(例えばmemcachedだけが動いているVMと

    人間とウェブの未来 - OSvのような環境でもサクっと動くmrubyのWebサーバ作った
  • 大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善について書いた論文公開

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 @jj1bdxさんに「このような運用論文を誰でも読める形で」「情報処理学会や信学会の論文誌掲載論文は、論文誌に掲載された後であれば、著者がWeb上で公開するのに制限はない」という情報を頂き、別に公開しない理由もないので、大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善という内容で書いた論文を公開したいと思います。 僕が会社にいた時、ApacheのVirtualHost環境でレンサバを構築するというのは既にセキュリティ・運用性・パフォーマンスにおいて色々と問題がある事は10年以上前から分かっており、別の方法で共有環境を構築していました。 ある時、VirtualHostで共有環境を真面目に組むとどうなるか、という議論を元

    大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善について書いた論文公開
    InoHiro
    InoHiro 2013/09/03
  • mrubyによるWebサーバの機能拡張支援機構を一緒に開発しませんか?

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ある人「あなたのやりたいことはなんですか?」 僕「複数あるWebサーバソフトウェアの拡張記述を統一したいです」 ある人「(それはさすがに無理だろ…)」 という感じで始まったmod_mrubyやngx_mrubyの開発ですが、今ではそれも夢では無い所まできています。当時は「mod_mrubyを作ってみようか」という記事からmod_mrubyの開発ははじまりました。 朧げにあったアイデアでは、「どうやって統一するのか?どんな言語にするのか?どうやって組み込むのか?え?そもそもそんな事無理では?」という感じでしたが、1年前に運良くmrubyGitHubで公開されて以来、色々なアイデアのピースがはまっていき、いつの間にかそのアイデアが形になろうとし

    mrubyによるWebサーバの機能拡張支援機構を一緒に開発しませんか?
    InoHiro
    InoHiro 2013/07/01
  • 今日からmrubyをはじめる人へ

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ApacheCon NA 2013に参加し、早めにポートランド国際空港に到着しました。時間があるので、今日(2013年3月2日)からmrubyを始める人へ簡単なチュートリアルをしようと思います。 mrubyというプロジェクト mrubyとは、組み込み機器やアプリ組み込みに最適化された軽量スクリプト言語です。記述方法は既存のRubyのように書くことができます。C言語で書かれたホストアプリにmrubyを組み込むことで、ホストアプリをRubyの記述でコントロールすることができます。例えばmod_mrubyは、RubyでApache APIをつつけるようにmrubyをApacheに組み込むためのモジュールで、ApacheモジュールをRubyで記述する

    今日からmrubyをはじめる人へ
  • mod_mrubyのメモリ問題をvalgrindで調査の上jemallocで改善

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mod_mrubyはmrubyのmrb_stateをApacheのサーバプロセス上で使いまわすアーキテクチャをとっています。基的にプロセスは起動しっぱなしなのですが、リクエストを大量に処理すると、プロセスのメモリがどんどん太っていく問題がありました。 これは、mruby-uv等でも報告されており、どうにか改善したいと思っていました。そこで、twitter上でいくつかmatzさんとやり取りしながら、valgrindでメモリのLEAKとHEAPを調査の上、mallocのフラグメントを疑い、jemallocでmallocをフックするとどのようにメモリ使用量が改善するかを実験しました。 valgrindでApacheをデバッグ valgrindでA

    mod_mrubyのメモリ問題をvalgrindで調査の上jemallocで改善
  • mod_mrubyに高速化機能を追加

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Apacheやnginxで動くLuaやその周辺を見ていると、Luaのコードをhttpd.confに直接書くような設定の方法があります。その結果、高速にLuaが動いて、「やっぱLuaはやいー、最高ー」とかそういう話を目にしたので、それだったらmod_mrubyでもやってやろうじゃないかと思いやってみました。 そもそもconfに直接書くとなぜ速いのか もともとmod_mrubyの売りの一つは、Apacheを起動させている状態で再起動することなく自由にスクリプトを変更して、Apacheの内部処理をリアルタイムに変更できる事です。mod_mrubyの基的な考え方は以下を参考にして下さい。 なぜApacheにmrubyを組み込もうと思ったか しかし、

    mod_mrubyに高速化機能を追加
    InoHiro
    InoHiro 2012/10/18
  • 人間とウェブの未来 - Linuxエンジニアを辞めて大学院に入学しました

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 昨日の記事が1日で多くの方に見て頂けているようでとてもうれしいです。 今回は元々、今日このタイミングで記事にしたいと思っていた内容があったのでそれを書きたいと思います。僕は去年の9月に会社をやめて、今年の4月から大学院に入学しました。「Linuxエンジニアを目指して入社1年目で役に立ったと思う事を書いた人が、実はLinuxエンジニアをやめていた事を知ると、昨日のはなんだったの?」と思う人もいるかもし れません。なので、少しタイミングが悪いかもしれませんが、とりあえず書こうと思います。話は小学校までさかのぼるので長くなるかもしれません。暇つぶしに読んでやろうか、ぐらいで読んで頂ければと思います。 大学までの自分 僕は、小学校3年ぐらいから中学

    人間とウェブの未来 - Linuxエンジニアを辞めて大学院に入学しました
    InoHiro
    InoHiro 2012/10/18
  • 大学院で学生やりながら起業することになりました

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 つい先日、開業届を税務署に出してきました。元々、いつかは起業したいなぁと考えてはいたのですが、こんなに早くそうなるとは思っていませんでした。そのようになった話の流れを書きます。こういう風に起業する人もいるんだというサンプルになれば良いと思っています。 起業に至るまで 今年の4月に大学院に入学後(Linuxエンジニアを辞めて大学院に入学しました)は、幾つかアルバイトを掛け持ちしていたのですが、やっぱり研究といのは予定が流動的だったり、ある時いいネタを思いついて一気に実装したり実験したりという事が多く、なかなか決まったシフトで会社に予定を出すことができていませんでした。 だからといって、なるべく予定が変わらないであろう、土日に固定して出社してみて

    大学院で学生やりながら起業することになりました
    InoHiro
    InoHiro 2012/10/18
  • mod_mruby、mod_lua、mod_perl、mod_rubyのアーキテクチャの違いと性能

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mod_mrubyやmod_lua、そしてこれまでApacheモジュールをスクリプトで書く場合に使われてきたmod_perlとの性能比較を行っています。 modとしてのアーキテクチャの差で処理系の性能差を埋める 処理系としての差ではなく、Apacheのmod_***としてのアーキテクチャの差によって、Apache上での性能が大きく変わる事が分かってます。Apacheはプロセス(スレッド)をプールしておいて、複数のリクエストに対しプロセスを再利用するアーキテクチャであるため、インタプリタのロードやライブラリの読み込み、さらにはスクリプトをコンパイルするタイミングを工夫すれば、Apache上では高速に動作させる事が可能になります。 例えば、mru

  • mod_mrubyとApache(Nginx)の関係を図示してみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 今回は、言葉だけだと非常に分かり難いmod_mrubyの役割を図示してみました。 このエントリを読んだ後にでも、「なぜApacheにmrubyを組み込もうと思ったか」を読むと色々理解が深まるかもしれません。 ApacheとApacheモジュールの関係を図示 まずは、ApacheとApacheモジュールの関係は以下のようになります。 皆さんご存知の通り、ApacheコアにApache APIがかぶさっていて,Apacheモジュールを組み込んでいく仕組みです。 では、mod_mrubyだとどういう図になるのでしょうか。 ApacheもApacheモジュールとmod_mrubyの関係を図示 このように、mod_mrubyでmrubyスクリプトの実装

    mod_mrubyとApache(Nginx)の関係を図示してみた
  • Linuxで3万(10万)プロセスを同時に起動させてみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 といっても、きちんとした検証をしたわけではないので、あくまで「こういう環境でこういう事をやるとこうなる」という参考程度のものと理解してい頂ければ幸いです。 Linux上でプロセスは同時に何個起動できるのか 数年前にC10K問題が流行りました。これは、簡単に言うと、万のオーダーでプロセスを立ち上げる事になると、現状のOSではそれを想定した設計になっていないためまともに動かなくなる、といった問題でした。 だったら、「10万プロセス位を同時に立ち上げてみて、どうなるか試してみようぜ!」と思い、会社のエンジニアと一緒に試してみました。検証環境は、メモリ48GでCPUはHyperThreading込で24コアです。そこで動いていたOSはDebianでL

    Linuxで3万(10万)プロセスを同時に起動させてみた
  • 1