Hateburo: kazeburo hatenablog

Operations Engineer / Site Reliability / 運用系小姑 / Perl Monger

TCP over WebSocket & IAP

Googleのhuproxyみたいなもので、任意のprotocolが通しやすく、Google Cloud Load BalancingのIdentity aware proxyに対応したものが欲しかったので、作ってみた。 github.com github.com GCPの中のMySQLに対して、service accountで認証して接続するイメー…

普通のサーバでDocker ContainerをHot DeployしたかったのでProxy書いた

2018年も後半だけど、普通のサーバ上でコンテナをHot Deployしたいと思ってproxy書いた github.com 任意のラベルがついたDocker containerのpublic portをdocker api経由で取得して、private portをlistenして、proxyを開始するものです。 ラベルがついたコ…

YAPC::Okinawa 2018 ONNASON に行ってきた

YAPC::Hokkaido、YAPC::Fukuoka に続き YAPC::Okinawa 2018 に行ってきました。 発表 発表は2つ。 前夜祭 開催前日に作った資料。logrotateとfluentdとPHPが絡んだわりと複雑な問題に対してLD_PRELOADというやや斜め上の方法をとった話です。 本編スペシャル…

2017年 喋ってきたまとめ

振り返り的なエントリです。 3月 さくらインターネット プレゼンツ メルカリ×はてなの夕べ さくらさん、はてなさんのイベントのセッションに参加しました。専用サーバをどのように使っているかという話をはてな id:wtatsuru さんとしました。 hatenanews.com…

ISUCON7 予選通過した!!

ISUCON7に id:sugyan と id:gfx と、チーム「スギャブロエックス」で出場して、2日目の2位、全体でも2位で予選通過できました。 icon画像さえ突破できれば、よく練られている問題で楽しめました。サーバもベンチマークも快適に動いて課題に集中出来ました。…

GCP HTTP(S) load balancing 配下のnginxでクライアントIPを取得する方法

GCP HTTP(S) load balancing の X-Forwarded-For ヘッダは少し変わっているのでメモ。 X-Forwarded-For とクライアントIP ELBや他のproxyを使って、その配下のサーバにリクエスト元のIPアドレスを伝える際には、X-Forwarded-For ヘッダが使われます。 X-Forw…

N秒間だけクエリ実行ログを取りたい

pt-query-digestだったり調査のために、N秒間だけmysqlの全クエリのログを取得したいということはよくありますよね そんな時はこんなコマンドを使うと簡単に指定の秒数slowlogを切り替えて保存、取得後に元に戻してくれます。 $ slowlog.pl --duration 10 --…

【29年ぶりの大雪】YAPC::Hokkaido 2016 SAPPORO へ行ってきた! 【試される大地】

JPAの新しいメンバーのもと、REBOOTされたYAPC::Asia、YAPC::Hokkaido 2016 SAPPOROに、ゲストスピーカーとして呼んでいただけたので、行ってきました。 発表資料はこちら。 メルカリの技術ブログで紹介したSRE、1年たってエンジニアの新しいロールとして少…

libeatmydataを使ってpostfixを劇速にする [用法用量要確認]

libeatmydataというLD_PRELOADを使って、起動したプロセスのfsyncを無効化するライブラリがあったので試してみています。 libeatmydata - disable fsync and SAVE! fsyncがないと何が嬉しいかというとクラウドのようなIOまわりの環境が弱いところで、安全性…

Ruby 2.4.0 preview3 での pico_http_parser のベンチマーク

Ruby 2.4.0-preview3 で Hash まわりの改善があったということで、pico_http_parser のベンチマークを取ってみた Ruby 2.4.0-preview3 リリース GitHub - kazeburo/pico_http_parser: Fast HTTP Parser using picohttpparser ベンチマークは。pico_http_pars…

最近の Plack のパフォーマンス改善まとめ 2015年11月版

OSS活動の成果発表のお時間です。 Plackの 1.0038と2015年11月27日時点のmasterにはPlack::Request、Plack::Responseのパフォーマンスをあげる変更が入ってます。その紹介とベンチマークです。 github.com Plack 1.0038 で HTTP::Headers::Fast 0.20 につけ…

crontabのsyntax checkをTravis-CIで行う

crontabファイルをrespositoryで管理していますが、テストができてなかったので、それを解消すべくTravis-CIでやってみました。 .travis.yml language: ruby script: - cat crontab.ok.txt | crontab - cat crontab.fail.txt | crontab travisで実行された様…

2007-2015 YAPC::Asia Tokyo で喋ってきたまとめ

今年のblogはまだ書いてないけど書きました、これまでYAPC::Asia Tokyo で喋ってきたblog記事をまとめてみました 2007年から2015年まで10回中9回、トーク(2007年はLT)をさせて頂きました。 2015 ISUCONの勝ち方 isucon優勝するぞー! 「100万円欲しいかー!…

Rhebok, a High Performance Rack Handler/Server 2x faster than Unicorn

Last December I released Rhebok to rubygems. Rhebok is a High Performance Rack Handler/Server. rhebok | RubyGems.org | your community gem host kazeburo/rhebok · GitHub Rhebok is a standalone Preforking Web Server. This server is optimized …

SqaleでRailsアプリを高速サーバ「Rhebok」を使って起動する

Herokuに続き、Unicornの2倍のパフォーマンス発揮するRackサーバ「Rhebok」をパパボさんのPaaSであるSqaleで動かしてみる。15日間は無料お試しが出来るそうですよ。 Sqale Sqale - 開発者のためのホスティングサービス【スケール】 Ruby on Rails 対応。 Gem…

HerokuでSinatraのアプリを「Rhebok」で起動する

Unicornの2倍のパフォーマンス発揮するRackサーバ「Rhebok」をherokuで動かしてみる アプリケーションは heroku で Sinatra のアプリを動かす - Please Sleep を参考にさせて頂きました。 Gemfile まずGemfileを用意します $ cat Gemfile source 'https://ru…

picohttpparserのRubyバインディングとPreforkサーバを書く時に便利なgemをリリースしたので、Rackサーバ書いてみた

GazelleでやったことをRubyでもやってみようと思い、まず picohttpparser の Ruby バインディングと、perforkなサーバを書く時に便利なモジュールであるParallel::PreforkのRuby版を書いてリリースしました。 pico_http_parser http://rubygems.org/gems/pic…

Released Gazelle, new Simple and Fast Plack Handler

I released Gazelle, new Plack handler Gazelle - Preforked Plack Handler for performance freaks - metacpan.org Gazelle - Preforked Plack Handler for performance freaks - metacpan.org Gazelle is a Plack Handler/PSGI server. This server is op…

ISUCON4 予選アプリケーションの復習した結果

本選までの間に地道に復習をした結果です。 repositoryはここで公開されています https://github.com/kazeburo/isucon4-elimination-myhack 最終スコア 派手な点ではありませんが、63000弱となりました $ ~/benchmarker bench --workload 8 07:26:29 type:in…

ISUCON4 予選でアプリケーションを変更せずに予選通過ラインを突破するの術

AMIが公開されたのでもう一度やってみた。 AMIについてはこちらのエントリに書かれています ISUCON4 予選問題の解説と講評 & AMIの公開 : ISUCON公式Blog ISUCON4 予選問題の解説と講評 & AMIの公開 : ISUCON公式Blog まず ami-e3577fe2 を m3.xlargeで起…

「記憶に残る風景」 #地元発見伝

伊豆長岡の方から祖父の家がある内浦に出たところ。 左に曲がると三津シーパラダイス。右は沼津市内に戻る 「記憶に残る風景」 #地元発見伝 沼津市, 静岡県県道17号線地元の魅力を発見しよう!特別企画「地元発見伝」

Run any Perl applications on Heroku

I made a simple heroku-buildpack for perl. With using this buildpack you can run any perl application from Procfile.github: https://github.com/kazeburo/heroku-buildpack-perl-procfile Sample and Usage This sample runs a PSGI server and a wo…

Web::Module::CoreList

I created Web::Module::CoreList. This site provides Web interface of Module::CoreList. You can know what modules shipped with versions of perl through this web site.http://corelist.rpee.be/Web::Module::CoreList is created based on tokuhiro…

(解決済み) DBIx::TransactionManager + File::RotateLogsで意図せずトランザクションが終了してしまう件

DBIx::TransactionManager 1.13で子プロセスでrollbackを実行しないような変更が入っています。https://metacpan.org/release/NEKOKAK/DBIx-TransactionManager-1.13TengやDBIx::Sunnyなどでトランザクションを使用し、File::RotateLogsでログを書き出してい…

Router::BoomとRouter::Simpleの文字列エンコードまわりの動作

昨日気付いた。Router::Simpleはいわゆるutf8 flaggedな内部文字列を渡すと、キャプチャしたテキストも内部文字列として得られるけど、Router::Boomはバイナリ列となる。 use Router::Boom; use Router::Simple; use Encode; use Test::More; use utf8; subt…

通信先が明確な内部APIなどのURIを構築するときはURI.pmを使わなくても良いんじゃないかな

通信先が明確な内部APIなどのURIを構築するときはURI.pmを使わなくても良いというかURI.pmはあまり速くないので、文字列連結だけで十分だと思います #!/usr/bin/perl use strict; use warnings; use Benchmark qw/:all/; use URI; use URI::Escape; use URL:…

application/x-www-form-urlencoded パーサーの動作を決める

深淵な理由があって2014年に application/x-www-form-urlencoded のパーサーを作ることになるとして仕様を考える基本はW3CのSPECを参考にしつつ、これまでのアプリケーションとの互換性を保つことを目標とする application/x-www-form-urlencoded ペイロード…

Released POSIX::strftime::Compiler. GNU C library compatible strftime for loggers and servers

I released POSIX::strftime::Compiler v0.10 to CPAN.https://metacpan.org/release/POSIX-strftime-Compiler https://github.com/kazeburo/POSIX-strftime-CompilerPOSIX::strftime::Compiler provides GNU C library compatible strftime(3). But this mo…

Apache::LogFormat::Compiler v0.22 has been released. Fixed bug around DST

Apache::LogFormat::Compiler v0.22 has been releasedcpan: https://metacpan.org/release/Apache-LogFormat-Compiler github: https://github.com/kazeburo/Apache-LogFormat-CompilerFixed bug around Daylight Saving Time(DST). Older version shows in…

POSIX::tzset and Windows

When changing timezone in perl script. POSIX::tzset is required. local $ENV{TZ} = 'Asia/Tokyo'; POSIX::tzset(); localtime(); But Windows does not support this. old Windows dies with "not implemented" error. newer Windows does not die. But …