タグ

ブックマーク / blog.nomadscafe.jp (13)

  • G-WANはなぜ速いのか?をnginxと比べながら検証してみた - blog.nomadscafe.jp

    ツチノコブログのWEBサーバベンチマークツール比較の記事で紹介されていた。WebサーバのG-WAN。この記事によると凄く速いようです。 Intel Xeon E5-2640 (6コア/12スレッド 2.50GHz) を2つというサーバで gwan  334944 req/s nginx 111842 req/s と、速いと言われているnginxの3倍の速度を出しています。 このベンチマーク結果がとても気になったので、なぜG-WANが速いのか、自分でも検証してみました。 結論から言うと以下の2つ。 1) G-WANはデフォルトで物理CPUに合わせた数のスレッドを起動する 2) HTMLファイルも一度読み込んでキャッシュする という事です。 今回はAWSのcc2.8xlarge(E5-2670 8コア/16スレッド 2.60GHz *2)を使ってベンチマークを行いました。OSはAmazon L

    antipop
    antipop 2013/09/04
  • YAPC::Asia 2012 で発表してきました!日本よ、これが #yapcasia だッ!! - blog.nomadscafe.jp

    5.6!5.6!5.6! 今年も無事にYAPC::Asiaに参加と発表させて頂く事が出来ました。牧さん、941さん、JPAの皆様、ボランティアの皆様、参加した全てのPerl Mongersに感謝です。 今年の発表は、去年のこの時期にやっていたlivedoor Blogのサーバ集約作業とその為につくったツールや自動化について紹介させて頂きました。 質問でも出てきた「作成した移行スクリプトの検証」ですが、メンテナンス時間内にデータベースのコピーが完了するかどうかの検証とあわせて、実際に実行して確認していました。今にして思えばdry-runモードを作ってテストケース書いて確認するぐらいやってもよかったかもしれません。次回(があれば)チャレンジしたいです。 もう一つ言い忘れてましたが、mysql40dumpはMySQL 5.1、5.5でも検証済みで弊社でもヘビーにサーバ運用に使っています。自動でm

    antipop
    antipop 2012/10/01
  • Twiggy::Prefork をリリースしました - blog.nomadscafe.jp

    だいぶ以前 Plack::Server::AnyEvent::Prefork というのを書いて某所で使っていたのですが、ここ数日で事例がもうひとつ増えたついでに Twiggy ベースに書き直してCPANリリースしました。 https://metacpan.org/module/Twiggy::Prefork 使うには、 $ plackup -s Twiggy::Prefork -a app.psgi な感じで、Server::Starterにも対応しているので、 $ start_server --port 5000 -- plackup -s Twiggy::Prefork -a app.psgi とすれば、hot-deployも可能です。 起動オプションは、Twiggyがサポートしているオプションに加えて、 —max-workers preforkするworker数 —max-reqs-

    antipop
    antipop 2012/05/31
    某所でざっくりこういうの書いて動かしてるんだけど、ちゃんと対応されて素晴しい感じ。
  • Replication Booster for MySQL を試す - blog.nomadscafe.jp

    松信さんが作った Replication Booster for MySQL をデータサイズが大きいデータベースに対して使ってみました。 Yoshinori Matsunobu’s blog: Making slave pre-fetching work better with SSD github - yoshinorim/replication-booster-for-mysql Replication Booster for MySQL をものすごく簡単に説明すると、以下のようになるでしょうか。 MySQL でレプリケーションを設定した場合、マスターのバイナリログをIOスレッドが読み取り、relay-logへ記録します。そしてSQLスレッドがrelay-logから読み取ってテーブルを更新して行きます。Replication Booster を実行するとrelay-logを読み取り、更

    antipop
    antipop 2012/03/23
  • Plack::Middleware::ReverseProxy でリモートホストを確認する理由 - blog.nomadscafe.jp

    Reverse Proxyの後ろでApplication Serverを動かす際に、REMOTE_HOSTを当のアクセス元に書き換えてくれる仕組みはいくつかありますが^1、Plackでは壇上氏の Plack::Middleware::ReverseProxy がそれにあたります。 ^1 例えば mod_extract_forwarded http://www.openinfo.co.uk/apache/ PM::ReverseProxy のSYNOPSISでもそうなってますが、このような仕組みを使う場合、REMOTE_HOSTを指定するのが安全です。 builder { enable_if { $_[0]->{REMOTE\_ADDR} eq '127.0.0.1' } "Plack::Middleware::ReverseProxy"; $app; }; 拙作の Plack::Buil

    antipop
    antipop 2012/02/27
  • Kansai.pm に参加します! - blog.nomadscafe.jp

    11/26 に行われる「Kansai.pm 第14回ミーティング in 京都」に参加しまっす。 atnd: http://atnd.org/events/17949 今回はJPAの協賛付きです! livedoor blogの運用やcloudforecastの話をする予定です。Perlを使ってWebアプリケーションの運用を楽にしたり、パフォーマンス改善に繋がるTipsを紹介できればと思います。 会場は京都のはてなさんのオフィスです。関西周辺のかた、よろしくおねがいします!ぜひ来てくださいませー。

    antipop
    antipop 2011/11/01
    kazeburoさんがJPA協賛で11/26(土)開催の #kansaipm に!!1 楽しみ!!1 参加します!!1
  • Webアプリケーションエンジニアに知っていて欲しいインフラの知識 - blog.nomadscafe.jp

    過去に何回か、Webアプリケーションエンジニア向けのインフラ勉強会があったらいいなぁとtwitterにつぶやいたことがありますが、じゃぁ実際どんな内容が良いのか、あまりまとまっていませんでしたので、整理してみました。 まぁ「Webアプリケーションエンジニアに知っていて欲しいインフラの知識」と言いながらWebアプリケーションの運用の仕事をしている自分でも専門にやっている方からみて完璧に答えられる自信はありません。ただ今の世の中ググれば答えは見つかるので「概要は知っている」そして「詳細を調べる方法を知っている」ぐらいで問題ないと思っています。 ネットワークにおけるレイヤ2,3,4,7の概要 TCP/IPの通信開始、通信終了時の状態遷移の把握 IPアドレス、セグメント、スタティックルーティング、NAT CPUのトレンド HDDの構造 RAIDレベル、RAIDカードのBBUの役割 SSDの特徴 ハ

    antipop
    antipop 2011/03/09
  • キャッシュシステムの Thundering Herd 問題対策モジュール Cache::Isolatorというのを書いた。 - blog.nomadscafe.jp

    やや大袈裟な名前ですが「memcachedにおけるキャッシュシステムの Thundering Herd 問題への対策案」とか「キャッシュシステムの Thundering Herd 問題への対策案。その2 排他制御」で書いていたコードをモジュールにした github: https://github.com/kazeburo/Cache-Isolator 機能としては、平行動作数を制御できるget_or_setと、一定の確率で少し早く有効期限が切れるキャッシュの保存、取得、削除あたりがあげられます 使い方ですが、まず、get_or_setの例。 my $isolator = Cache::Isolator->new( cache => Cache::Memcached::Fast->new(...), concurrency => 4, # get_or_setのcallbackの最大平行動作

    antipop
    antipop 2011/02/25
  • gearman の worker processのスコアボードをネットワーク越しに見えるようにした - blog.nomadscafe.jp

    tokuhiromのgearman の worker process にスコアボードをつけてみる (git) のスコアボードをネットワーク越しに確認できるようにしてみた。 git: http://github.com/kazeburo/gearman-starter.pl 具体的にはworkerのloopに入る前に指定したportをlistenするプロセスをforkして、そいつにアクセスすることで、ステータス(スコアボード)を取得できる。 ステータスを表示するために—port と —listen の2つのオプションを追加した。起動は % perl -Ieg/lib ./gearman-starter.pl -s 127.0.0.1:7004 --scoreboard-dir /tmp/test --listen localhost --port 7005 MyWorker な感じ。teln

    antipop
    antipop 2010/07/07
  • PSGI/Plackで非同期 Web Server - blog.nomadscafe.jp

    PSGI/Plackにおいて、非同期にレスポンスが返せるstreamingという仕様/機能が追加されました。 PSGI/Plack streaming is now complete これを使うと、streamingをサポートしたサーバから非同期/nonblockingにhttpやGearmanを利用して外部へ問い合わせを行い、その結果をレスポンスしたりできます。 また、これがPlackで既に実装済みなので、非常に短いコードでサーバの実装ができちゃいます。 すばらしいですね。 すでにmiyagawaさんが、この機能を利用した非同期Web Framework「Tatsumaki」を書かれています。 イベントを扱う部分が隠蔽されているので、これを使うとさらに簡単に実装できます。 すばらしすぐる。 ここでは、簡単に外部へAnyEvent::HTTPを用いて、HTTPリクエストを行うサンプルを書い

    antipop
    antipop 2009/10/19
  • Squidのキャッシュの消し方 : blog.nomadscafe.jp

    Squidのキャッシュの消し方 Net::Squid::Purgeというモジュールがでてたので。 Squidのcacheの消し方は、Squidから特定のキャッシュのみを削除する方法にsquidclientを使ったやりかたが紹介されているのですが、上のモジュールはそれをPerlから便利に使えるようにしたもの見たいですね。 主にReverse Proxyとして使っているパターンですが、最近ではsquidclient使ったり、IO::Socketやtelnetで叩くのが面倒なので、HTTPの仕様を利用しています。 HTTP/1.1の仕様でキャッシュサーバは Cache-Control: max-age=n のようなリクエストを受け付けた場合に、キャッシュの経過時間がn秒よりも古かった場合、expires等が切れてなくても、オリジンのサーバにリクエストを行うことになっています。 そこでこれを利用し

  • 高速Webサーバ Nginxの組み込みPerlを使ってみる : blog.nomadscafe.jp

    高速Webサーバ Nginxの組み込みPerlを使ってみる NginxというWebサーバがあります。 ロシアの方がつくったもので、rambler.ruでも使われてます。 日語情報がほぼ皆無ですが、このあたりで紹介されています。 機能的には、epoll,kqueueやsendfileなどがサポートされ、 rewrite, header書き換え deflate FastCGI SSL シンプルな負荷分散付きreverse proxy 等すでにLighttpdと比較しても遜色ない十分な機能が実装されてます。 パフォーマンス的にもLighttpdと同等かそれ以上でます。 珍しい機能として、「perlインタプリタの組み込み」があるので早速試してみます。Fedora Core6ではnginxはyumでインストールできます。perl_moduleも有効になってます perl関連のドキュメントはここ。

  • QRコードをswfとして生成するスクリプト : blog.nomadscafe.jp

    QRコードをswfとして生成するスクリプト QRコードを生成して、FlashのSWFとしてはき出すスクリプトを書いてみた。 書き出したSWFのサンプルはこちら。 生成時の負荷が大きいので動作サンプルの公開は控えておきます。 スクリプトは非常に簡単。 QRコードの生成は、GD::Barcode::QRcodeでできます。 barcode()メソッドを使うと、QRコードの黒いところは「1」、白いところは「0」のテキストデータして出力してくれます。 SWFの生成は、SWF::Builderモジュールで行います。 このスクリプトができたあと、PDF版を作ろうと思って、PDFJをみていたら、ほぼ同じサンプルが入っていた。 でも、WebでQRコードを生成して、PDFで落とせたら、印刷用とかで需要があるかなぁ。 スクリプトは追記へ

    antipop
    antipop 2005/05/29
  • 1