人間とウェブの未来

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

特定条件下のclone(2)を4倍速くする

とあるサーバで妙にシステムCPUの使用率が高い現象が置きておりました。 そこで、まずはざっくりとperf topでプロファイルをとってみると、以下のようになっていました。 22.38% [kernel] [k] copy_pte_range 18.44% [kernel] [k] zap_pte_range 11.13% [ker…

エンジニアが技術力を高めるもう一つの理由 - はてな・ペパボ技術大会を経て

はてなさんと共催で行った「はてな・ペパボ技術大会@京都」と「ペパボ・はてな技術大会@福岡」が無事終わりました。 http://developer.hatenastaff.com/entry/2016/06/21/131302 ペパボ社内では、はてなサービスとその技術力の高さのファンが多く、はてな…

PHPカンファレンス福岡2016に初参加しひとつの確信を得た #phpconfuk

先日PHPカンファレンス福岡2016に参加してきました。 一つ前の記事でここ半年の登壇についてまとめており、その中でPHPカンファレンスにも触れる程度にとどめていたのですが、PHPカンファレンス福岡の振り返り記事やツイートまとめの中で多くの方に僕の発表…

カーネルスレッドのループと停止をカーネルモジュールで実装

以前Linuxのカーネルスレッドがループして暴走したときに、カーネルスレッドの扱いを調べていた時期があって、それの簡単な動きを再現するべくカーネルモジュールを作りました。まずは、自力で試したい人は以下を見ずに試すと良いでしょう。

1月から5月の技術関連の登壇資料まとめと振り返り

1月から上期がはじまり、昨年は出産関連などで9月を最後にあまり登壇できていなかったので、今年は頑張るぞ〜と意気込んでいたわけですが、怒涛のように登壇依頼がやってきて、やばいこれはきついぞ!と思いながらもなんとか一段落するところまでやり切れた…

7年目の革靴

僕は靴や革全般が好きだ。つまり、革靴がそのなかでも1番好きで、もうかれこれ10年以上その魅力にはまっている。

技術的アウトプットが必要な時代に求められる心構えと社外発表の頻度を増やす事の副次的効果

この話については、僕が専門としているWebサービス関連の業界におけるお話だと思って下さい。ただ個人的には、もう少し広範囲でも適用できる話なのではないかなとも思っています。 ということで、早速アウトプットすることのメリットから簡単に今の現状をま…

IPSJ-ONE 2016で登壇してきた - 確実に時代は変わってきている #ipsjone

先日、慶応義塾大学で開催された情報処理学会全国大会のトリのビッグイベントであるIPSJ-ONE2016で登壇してきました。 IPSJ-ONEとは、 IPSJ-ONEは、時流に乗る日本の若手トップ研究者19名によるライトニングトーク形式の登壇を俯瞰することで、 今後の情報社…

ペパボ福岡の技術的強みと働くメリット

について、先日イベントで講演してきました。 ちょうど自分自身、福岡にきて1年程度で、講演時に福岡出身の方に手を上げていただくとほぼ9割以上が福岡、または、九州の方だったので、いきなり自分が福岡の良さを語って良いのかピンチに陥りましたが、なんと…

ngx_mrubyがHomebrewで超簡単にインストールできるようになった

タイトルの通りなのですが、つい先日Homebrewでngx_mrubyがインストールできるようになりました。

HTTP/2へのmruby活用やこれからのTLS設定と大量証明書設定の効率化について

Webサービス事業者として僕が先行して調査したり研究・開発している技術の中で、Webサーバ設定におけるHTTP/2とそのmruby活用についてや、PFS(Perfect Foward Secrecy)を考慮したTLS設定と大量証明書設定の効率化について、社内のインフラエンジニア向けに…

nginx実践入門はまさに今が買いの素晴らしい本だ

nginx実践入門を読みました。 www.amazon.co.jp なぜか福岡で @kazeburo さんとお会いし、その際にkazeburoさん経由でnginx実践入門の献本を頂きました。この本は、nginxについて調べていると必ずといって良い程お見かけし、素晴らしい情報を発信している久…

Webサーバのベンチマークツールはh2loadが便利

Webサーバのベンチマークをとるのが趣味になりつつあるmatsumotoryです。 Webサーバのベンチマークについては、abからはじまりwrk等を使っていたのですが、最近ではほぼh2loadを使っています。

2016年の抱負 - 悔しさの回収

あけましておめでとうございます。 2016年になり、早速今日から仕事はじめのところも多いと思います。ということで、今年の抱負でも簡単に書きます。 2016年1月付でシニア・プリンシパルエンジニアになった 参照: エンジニアの働き方 | キャリア採用 | 採用…

2015年振り返り - 福岡という地でペパボに入社した

実績については、いつも通り実績ページにまとめているので、それを参照するとして、 · 松本亮介の研究・開発業績ページ 2015年は、2012年に一旦会社をやめて3年間大学院の博士課程で研究をやり直し、大阪から福岡に引っ越ししてペパボという会社に入り直した…

mrubyのRedisクライアントのPipelining対応とDisqueクライアント

この記事はmruby adevent calendar 24日目の記事です。 mrubyでRedisを操作するmruby-redisは以前から開発していたのですが、最近Pipelining対応のPRを頂きPipelining対応したのでそれの性能を確認してみました。また、その結果簡単に作れるようになった分散…

mrubyでHTTP/2の画像変換サーバを作った

この記事は、mruby advent calendar 2015の16日目の記事です。 画像やstaticコンテンツ配信系はHTTP/2が有利な状況が幾つかあるので、ついでにHTTP/2を喋る画像変換サーバのプロトタイプをmrubyで作ってみました。ベースはもちろんtrusterdです。なんていっ…

コマンド実行時のCPUやIOリソースを簡単に制御するツールrconを作った

CPUやメモリ、IOといったリソースの制限下でとあるコマンドを実行させたい場合に、cgroup上に何かgroupを作ったりしてからcgexecを実行して、実行後はそのgroupを消す、といったような一手間かかる方法がほとんどでした。 実行後のgroupも綺麗にしたい、とい…

ngx_mrubyのTCPロードバランシングを使ってFluentdのTCP通信とグラフ画像へのHTTP通信を動的に集約する

昨日、ngx_mrubyのTCPロードバランシング機能に対応した記事を書きました。 hb.matsumoto-r.jp というのも、実は以下に説明するようなFluetnd+Norika+GrowthForecastを利用したスケールアウト型のシステムを簡単に作りたかったからです。 ということで、まず…

ngx_mrubyがnginxのTCPロードバランシング機能に対応しました

nginxのv1.9あたりからOSS版でも使えるTCPロードバランシング機能をmrubyでプログラマブルに制御できるようにngx_mrubyでもサポートしました。 github.com これで、HTTPやHTTP/2だけでなくTCPのロードバランシングでもmrubyによって通信をプログラマブルに制…

mrubyのmrbgemをもっと簡単に作れるようにした

といっても、既存のmruby-mrbgem-templateをもう少し使いやすくしただけですが。

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

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

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

タイトルのままなのですが、pidから対象プロセスがopenしてるファイルとそのownerを解析し、CPU使用率やMemory使用率と合わせてレポートするワンバイナリなツールを作りました。 というのも、ホスティングにおいては負荷をかけているプロセスについて、リソ…

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

ご存知の通り、ApacheのVirtualHost(以下vhost)、所謂、Webサーバの仮想ホストは単一のApacheで複数のホストを処理しています。そのため、複数のvhostを含めたCPU使用量といったリソース使用量をグラフ化することは簡単なのですが、vhost単位となると各vho…

HTTP/2とmrubyの可能性についてお話してきた

福岡の博多で開催されたHacker Tackleという技術イベントで、「HTTP/1.xとHTTP/2が混在する時代のウェブサイト設計とmruby in HTTP serverの可能性」というタイトルでお話をしてきました。

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

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

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

一度大学・大学院を修了した後に、研究職以外に就職した技術者は論文を書かなくなる事がほとんどだと思います。 僕は、一度インターネットのウェブサービスに関する企業で技術者をした後に、大学院に入りなおして同様の分野で論文を書き、現在再度技術者をや…

mruby事例を中心に「Middleware Configuration as Code」という発表をした #rubykansai

今日は第68回Ruby関西勉強会にお誘い頂き、ミドルウェアへのmruby組込みの考え方であるMiddleware Configuration as Codeについて、事例を中心にお話しました。

H2Oとmrubyを使ってIPアドレスベースでアクセス制御しつつリバースプロキシとして動かしてWebサイトをHTTP/2化しよう

弊社インフラチームが使っているmuninをh2oのHTTP/2で高速化して、諸々の制御はmrubyでコントロールした。チームから「はやーい!」「スクロールで勝てない!」「こんな早い表示最近みたことなかったですよ!」と喜びの声が多数届いております。— MATSUMOTO,…

mvコマンドの--strip-trailing-slashesをデフォルト有効にして大丈夫か?

mvに--strip-trailing-slashesというGNUオプションがあるのは皆さんご存知だと思います。 指定された全ての引き数について、 後ろに付いているスラッシュを取り除く。 これは mkdir a; ln -s a la; mv la/ b' のような場合に役立つ。 この場合 POSIX の要求…