タグ

ブックマーク / sfujiwara.hatenablog.com (8)

  • AWS X-Ray による ISUCON8 本選問題の解析 - 酒日記 はてな支店

    ISUCON8 の選問題は、競技者がコントロールできない外部 API 呼び出しを多数含んだ出題内容でした。 講評では、 サービスの特性を適切に分析した上で、まとめるところはまとめたり、遅延させるところは遅延させるなど ……とさらっと書かれていますが、実際そんなことを短時間で分析することは可能なのかよ!という話題が競技後の懇親会でもあったので、それ AWS X-Ray でできるよ、というエントリをまとめておきたいと思います。 今回の解析は Perl 版の初期実装に対して行ったものですが、なぜ Perl かというと AWS の公式 SDK にない X-Ray 関連の CPAN モジュールを自分が書いているので、その宣伝も兼ねています。(blogエントリ書いてなかった) AWS::XRay Plack::Middleware::XRay Devel::KYTProf::Logger::XRay

    AWS X-Ray による ISUCON8 本選問題の解析 - 酒日記 はてな支店
  • nginx で gzip_static と gunzip を使ってストレージを節約する - 酒日記 はてな支店

    一月ほど前に 社内Gyazoの画像をAmazon S3に逃がしてスケーラブルに運用する - 酒日記 はてな支店 というエントリを書いて一段落と思いきや、そのサーバには社内向けの nopaste アプリも同居しており、気がつけばテキストファイルが10GB以上積もっていたのでした… 社内 nopaste アプリの実装はDBなどを使用せず単にテキストファイルを保存しているだけだったので、ファイルを gzip して nginx の http_gzip_static_module を使って配信したらディスクを節約できていいんじゃないか、と思いついたのですが、Accept-Encoding: gzip でないクライアントからアクセスすると 404 になってしまうので圧縮前のファイルが消せない。 今時ブラウザで対応していないものは少ないとはいえ、curlとか各種言語のHTTPクライアントでアクセスする場

    nginx で gzip_static と gunzip を使ってストレージを節約する - 酒日記 はてな支店
  • Consulクラスタ内でファイルを分散配布する tuggle を書いた - 酒日記 はてな支店

    github.com これはなに? HTTPを使って、ファイルを Consul クラスタ内で分散配布する daemon です。Go で書かれています。読みかたは「たぐる」です。 開発動機とユースケース 拙作の Stretcher というデプロイツールがあります。嬉しいことに、自分が勤務しているカヤックだけではなく、他社さんでも使われているようです。 先日、某社の Stretcher をお使いのかたに話を伺う機会があり、デプロイアーカイブの取得時のネットワーク負荷が問題になっているということを聞きました。 カヤックではサーバは基 AWS にあり、S3 からデプロイアーカイブ(200〜300MB程度)を取得しています。S3はちょっと意味が分からないぐらい堅牢で、stretcherの -random-delay 5 (開始を平均2.5秒、最大5秒ずらす) を設定した状態で100台程度から一斉に

    Consulクラスタ内でファイルを分散配布する tuggle を書いた - 酒日記 はてな支店
  • Norikraでwebサービスを守る話をしてきた - 酒日記 はてな支店

    Norikra meetup #2でLTをしてきました。LTといいつつ時間に余裕があったので15分以上しゃべっていたような… atnd.org 発表資料はこちらです。 speakerdeck.com Norikraで不正アクセスの兆候があるアクセスログを検知して、検知次第IPアドレスをmemcachedに突っ込んでそれをもとにアクセスをブロックする、というネタでした。 ログの流し込みが詰まった場合に誤爆しないように、結果のtimestampに1分以上の間隔があった場合は max(time) - min(time) で補正するとか、クエリに後処理で使うための定数を埋め込んでおくことでクエリごとに挙動を調整しやすくするとか、そんなかんじの細かい工夫をしています。 あと皆さん気になっていたNorikraの冗長化ですが、active-standby構成であればすぐできる気はします。 うちはいまst

    Norikraでwebサービスを守る話をしてきた - 酒日記 はてな支店
  • #isucon 4に参加して予選2日目暫定1位になりました - 酒日記 はてな支店

    ISUCON1, 2と「fujiwara組」で連覇し、2013年には出題を担当しましたが、今年は一参戦者として挑戦することになりました。 今年は弊社からの選枠もなく(共催ではないので)、予選落ちしたらそれまで チームは ISUCON 1,2のメンバーが自分以外全員退職(…) してしまったため、去年の出題担当 @acidlemn @handlename で新規編成 というなかなかプレッシャーのかかる状況でしたが、さしあたり予選2日目の暫定1位スコアを出すことができました。(後述しますが、一部レギュレーションに引っかかる可能性のある修正をしているため、失格となる可能性はあります。その判断が下された場合は、当然受け入れます) 速報結果はこちらです ISUCON4 オンライン予選 二日目の結果発表 : ISUCON公式Blog 例年のことながら、大変楽しいイベントでした。運営・出題をしていただい

    #isucon 4に参加して予選2日目暫定1位になりました - 酒日記 はてな支店
  • Coro と Go で並列実行数の制御 - 酒日記 はてな支店

    http://d.hatena.ne.jp/tokuhirom/20090710/1247196134 この Coro の例を Go でやってみます。 まず特定数 (ここでは 3) の worker thread を立ち上げておいて、そこにメッセージを送って仕事させるモデル。メッセージのやりとりに Coro::Channel を使います。 use Coro; use Coro::Channel; use Coro::Timer; my $ch = Coro::Channel->new; sub worker { while (1) { my $url = $ch->get; printf("worker(%d): %s\n", $_[0], $url); Coro::Timer::sleep(1); } } my @coros = ( async { worker(1) }, async

    Coro と Go で並列実行数の制御 - 酒日記 はてな支店
  • 標準出力や標準エラー出力を捕まえてテストする Test::Output / Capture::Tiny - 酒日記 はてな支店

    Perl で、あるコードが標準エラー出力に吐き出した内容をテストしたい場面がありました。 自分でまず思いついたのは STDERR を dup して保存しておいて、ファイルにリダイレクトして、元に戻して、というやりかた。これはこれで動くのですが面倒。こういう場合は Test::Output (や miyagawa さんに教えてもらった Capture::Tiny) が便利です。 Test::Output はこんな感じ。 std(out|err)_(is|isnt|like) といったテスト関数が使えるようになります。 use Test::Output; use Test::More; stderr_is { # STDERR になにか出力するコード } "STDERRの内容", "description"; stdout_like { # code } qr/regexp/, "descri

    標準出力や標準エラー出力を捕まえてテストする Test::Output / Capture::Tiny - 酒日記 はてな支店
    waniji
    waniji 2014/02/14
  • cron で > /dev/null して椅子を投げられないための3つの方法 - 酒日記 はてな支店

    (タイトルは釣りです) いい加減、>/dev/null 2>&1と書くのをやめたらどうか - DQNEO起業日記 この記事のタイトルが twitter で流れてきたのを見て、「そうだ!出力を /dev/null に捨てるなんてとんでもないよね!」と思ってよく読んだら /dev/null に間違いなく捨てる方法だったのでつい crontabに > /dev/null 書いたら椅子投げる 2012-06-13 00:01:17 via YoruFukurou とつぶやいてしまったのですが、では出力を捨てないためにはどうすればいいのか。現時点での個人的ベストプラクティスを書き留めておきます。 デフォルト : メールで送る (MAILTO) せっかく cron daemon がログを捨てないためにわざわざメールで送ってくれるのに、それを > /dev/null で踏みにじるとはひどい。 とはいえ、

  • 1