タグ

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

  • nginxでメソッドごとにリクエスト数制限を掛けたい - 酒日記 はてな支店

    アプリケーションでどうしても捌けない量のリクエストが一時的に押し寄せてしまう場合、アプリケーションサーバが死ぬのを避けるために GET は制限を掛けたいが、POST はリトライが面倒なのでなるべく通してあげたい、というような要求を nginx で処理できるかどうか。 実装として一番望ましいのは GET は 100 req/sec で制限 (超えたら503) POST は無制限 のようにメソッドごとに別々の制限を掛けることだったのですが、とりあえず HttpLimitReqModule を使うことで、メソッドごとに同一の上限を設定することはできました。 http { limit_req_zone $request_method zone=method:1m rate=100r/s; server { listen 80; location / { limit_req zone=method;

    nginxでメソッドごとにリクエスト数制限を掛けたい - 酒日記 はてな支店
    shag
    shag 2013/06/20
  • warn() で吐かれるログを捕まえて投げる - 酒日記 はてな支店

    Perl では $SIG{__WARN__} という疑似シグナルハンドラを使って、warn() で出力されようとする内容をトラップして処理することができます。 package MyWorker; my $logger = Fluent::Logger->new; sub work { my $job = shift; local $SIG{__WARN__} = sub { my $msg = shift; # warn() で出力される文字列が渡ってくるので logger で送る $logger->post( "job" => { jobid => $job->jobid, # jobid で検索できるように message => $msg, }, ); }; # job の処理 # warn("Error!") } 最初からログを何らかのオブジェクトに渡す仕組みを入れて作っていればよか

    warn() で吐かれるログを捕まえて投げる - 酒日記 はてな支店
    shag
    shag 2012/02/08
    これをされたら printf STDERR で華麗に回避
  • HAProxy で graceful restart する方法 - 酒日記 はてな支店

    haproxy には起動後に設定ファイルを読み込み直したりする機能がないので、バランス先を追加するなどの変更が無停止ではできない、と思い込んでいたのだけど実は違った、というお話。 実際、同一プロセスで読み込み直すことはできないのだけども、以下のような手法で graceful に再起動することができる。man はちゃんと読みましょう。 # haproxy -f /path/to/haproxy.conf -sf [既に動いているhaproxyのpid]として -sf オプションに pid を渡して起動すると…… haproxy[2] : 起動 haproxy[2] : 既に動いている haproxy[1] に SIGTTOU を送信 haproxy[1] : SIGTTOU を受けると Listen をやめる 新規接続は受け付けない 既に確立している接続はそのまま維持 haproxy[2]

    HAProxy で graceful restart する方法 - 酒日記 はてな支店
    shag
    shag 2011/11/10
  • [perl] YAPC::Asia 2011 で発表しました #yapcasia - 酒日記 はてな支店

    年に一度の Perl のお祭り YAPC::Asia で発表してきました。スライドはこちら (IE以外のブラウザ推奨) Perlで構築された中規模サイトのDC引っ越し記録 100万PV/日、数十Mbps 程度の中規模サイトを サーバ構成をリファクタリングしつつ なるべく止めずに 新DCに引っ越した という話です。 ご清聴いただいた皆様ありがとうございました。何かありましたらどこでも捕まえて聞いてください! [追記] なんと、ベストスピーカー賞を頂きました!副賞はなんの巡り合わせか、椅子です。 Perl成分の少ない発表だったので、応募したときはリジェクトされるのではないかとdkdkしていたぐらいなのですが、当にありがとうございます!

    [perl] YAPC::Asia 2011 で発表しました #yapcasia - 酒日記 はてな支店
    shag
    shag 2011/10/17
    僕もこれ観たけど、ベストスピーカー賞ですか。おめでとうございます。
  • 演算子 | を overload して TT のフィルタみたいな記法を実装する - 酒日記 はてな支店

    TT (Template-Toolkit) で値にフィルタを掛ける時に [% value | replace('x','y') | uri | html %]みたいに書きますが、Text::MicroTemplate だと仮に replace(), uri() という関数を用意しても <?= uri( replace($value,'x','y') ) ?>こんな感じ。なんか読みにくい気がする。(まあ PHP だってそうだといえばそうなんだけど) <?= $value | replace('x','y') | uri ?>こんな風に書けたら素敵ですよね。ということでこんなのを書いてみた。 package Filter; use strict; require Exporter; our @ISA = qw/ Exporter /; our @EXPORT_OK = qw/ html uri

    演算子 | を overload して TT のフィルタみたいな記法を実装する - 酒日記 はてな支店
    shag
    shag 2009/05/22
  • mod_xsendfile を使う - 酒日記 はてな支店

    mod_xsendfile for Apache2/Apache2.2 という Apache モジュールがありまして、これを使うとレスポンスヘッダに X-Sendfile: path/to/file と出力することで、Apache がレスポンスのボディをファイルの中身で差し替えてくれる。 Webアプリケーションで認証後、大きなファイルをダウンロードさせるような用途に便利。 このモジュールはその名の通り sendfile システムコールを(使えれば)使うので、アプリケーションが自前でファイルの中身を読んで送信するよりも速い(軽い)はず。http://www.linux.or.jp/JM/html/LDP_man-pages/man2/sendfile.2.html ってことでベンチマーク取ってみた。 1. 普通に静的ファイルを Apache が serve 2. mod_xsendfile

    mod_xsendfile を使う - 酒日記 はてな支店
    shag
    shag 2007/08/06
  • 1