タグ

programmingとproxyに関するsyo-yuのブックマーク (3)

  • nginxの組み込みperlで非同期に遅延させてレスポンス - blog.nomadscafe.jp

    ひさびさにnginxなどいじっている。 nginxがnon-blockingで動いているので、組み込みのPerlでもblockingする処理をいれることはおすすめされていないのですが、sleepだけは機能が用意されていました。使い道がよくわからないけど、とりあえずレスポンスを遅延させるのだけやってみた。 まず、handlerとなるperlモジュール package delay; use nginx; sub handler { my $r = shift; my $args = $r->args; $args =~ m/sleep=([^&]+)/; my $sleep = $1 || 1; $r->variable("sleep", $sleep); if ( $sleep ne "no" ) { $r->sleep($sleep * 1000, \&next); return; } $

  • 1975 年のプログラミング - steps to phantasien t(2007-06-17)

    少し前に Varnish という逆プロキシサーバが紹介されていた: 【レポート】高速化プログラミングの参照実装としても活用される「Varnish」 (2) vanishが採用している実装技術 : エンタープライズ : マイコミジャーナル. 気になったので資料を眺めてみる. プロジェクトの Wiki にある記事 Notes from the Architect, あとは 講演のスライド(PDF) などが概略には良さそうだ. 中味は仮想記憶やキャッシュ, SMP を有効活用して高速化しましょうという話. 仮想記憶の活用方法は二つ紹介されている. 一つ目は, "サイズに合わせて realloc() するかわりに最初からでかいサイズを malloc() しろ" というもの. 確保してもアクセスしなければ物理メモリにはコミットされないから, 拡張のたびにコピーの必要な realloc() より この

  • 仙石浩明の日記: stone に UDP ⇔ TCP 相互変換機能を実装

    stone で UDP と TCP の相互 変換を実装してみた (stone.c 2.3.1.10以降)。 つまり、UDP パケットが届いたら、 その頭にデータ長 (2バイト) を付けて 次図の形式のデータにして TCP セッションへ送信する。 あるいは逆に、 TCP セッションから次図の形式のデータを受信したら、 「データ長」の部分を取り除いて 「可変長データ」の部分を UDP パケットとして送信する。 ┌──┬──┬──┬─≪─┬──┐ │データ長 │ 可変長データ  │ └──┴──┴──┴─≫─┴──┘ もちろん「データ長」はネットワーク バイトオーダ (ビッグエンディアン)。 この形式は、 DNS の問合わせ/応答を TCP を使って行なう方法 (RFC1035 4.2.2. TCP usage) と 同じであるので、 # stone -n 192.168.1.1:domain/

  • 1