人間とウェブの未来

「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。

mrubyのmrbgemの依存関係とmgem-listの登録について

mrubyの機能拡張には、mrbgem(以下mgem)という所謂CRubyでのgemのような拡張モジュールを使います。mgemを開発していくと、もちろん以前作ったmgemの機能を再利用したい場合や、すでに存在する優れたmgemを使ってさらなる機能を実装したい場合が多くなるはずです。

昔は、mrubyのbuild_config.rbに粛々と依存するmgemを羅列していって、ビルドして依存関係に関する警告が出たらそのmgemを追加していくというかなり面倒な作りになっていました。

続きを読む

mruby-cliを使ってプロセスのfdをリソース使用率を元に解析するワンバイナリなツールpfdsを作った

タイトルのままなのですが、pidから対象プロセスがopenしてるファイルとそのownerを解析し、CPU使用率やMemory使用率と合わせてレポートするワンバイナリなツールを作りました。

というのも、ホスティングにおいては負荷をかけているプロセスについて、リソース使用量を元にopenしているファイルパスやファイルのownerを迅速に知りたい場合が多いからです。

既にあるコマンド、lsof/proctopとかその辺を組み合わせるともちろんできるんですが、mruby-cliを使ってone-binaryで作ってみたかったのと、openしているファイルとCPU使用率やMemory使用量同時にサクっと素早く表示してくれるツールがパッと調べた所なかったので実装してみました。

  • pfds - report a snapshot of the current processes fd

github.com

続きを読む

Webサーバの仮想ホスト単位のリソース使用量をFluentd+Norikra+GrowthForecastでグラフ化

ご存知の通り、ApacheのVirtualHost(以下vhost)、所謂、Webサーバの仮想ホストは単一のApacheで複数のホストを処理しています。そのため、複数のvhostを含めたCPU使用量といったリソース使用量をグラフ化することは簡単なのですが、vhost単位となると各vhostへのリクエスト単位でのリソースを計測しておかないとグラフ化することはできません。そういう意味でvhost単位でリソース使用量をグラフ化しようとすると一気に敷居が上がってしまいます。

また、uid毎に実行プロセスを分離しておけば、pacctといったプロセスアカウンティング機能でuidのカウントはできますが、リアルタイムの計測(秒とか分のオーダー)にはコストが高かったり、vhostで提供しているコンテンツによっては、Apache権限で配信されているものもある(静的コンテンツ)ため、正確に計測することは難しくなります。

一方で、ログをリアルタイムで集計して一定期間内で計測してグラフ化するツールとしては、FluentdやNorikra、GrowthForecastといった素晴らしいプロダクトがすでにあり、それらをうまく組み合わせてこれを実現したいという欲求が膨れ上がってきました。そう考えると、リクエスト単位でリソースを計測できれば、すぐに実装できそうです。

というわけで、思いついたらまずは手を動かしてみようということで、プロトタイプ実装をしてみました。

続きを読む

ApacheのVirtualHost単位でMaxClientsを設定するApacheモジュールをOSS化

一つのサーバに多数のホストを収容するような高集積なホスティングサービス(所謂レンタルサーバ)を提供しようとすると、収容しているユーザ単位でいかにリソースをコントロールするかが運用者には求められます。

そういう状況で、これまでApacheには色々なモジュールがあって、それらをうまく組み合わせながらリソースを制御してきたと思います。ですが、意外とシンプルなリソース制御として、VirtualHost(以下vhost)単位で個別にMaxClinetsを制御するだけのモジュールが無かったりします。それと同等の機能を提供するモジュールは幾つかあるのですが、色々と必要の無い機能が沢山盛り込まれていたりとか、特定のバージョン、特定のMPM、特定のOSでしか動かなかったりして微妙に使いにくかったりします。

要件的には単にvhost単位でMaxClinetsを各種MPMやバージョンで制御できれば良いです。こういうモジュールは各社社内で作っていたりすると思うのですが、汎用的なOSSとしてあまり公開されていないように思っています。

続きを読む

技術者が研究者のように論文を書くメリットはあるか

一度大学・大学院を修了した後に、研究職以外に就職した技術者は論文を書かなくなる事がほとんどだと思います。

僕は、一度インターネットのウェブサービスに関する企業で技術者をした後に、大学院に入りなおして同様の分野で論文を書き、現在再度技術者をやっているわけですが、技術者でも論文を書くメリットが ある と思っています。

以降でメリットについて述べますが、これらのメリットをまとめて手軽に享受できるツールって他にあんまりないんじゃないか(僕が思いつかないだけかも)と思ったので、この記事を書くに至りました。

というわけで、それを簡単にまとめます。

続きを読む