タグ

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

  • StarmanやStarletでmod_statusっぽい情報を得る簡易版Plack::Middleware::ServerStatus - blog.nomadscafe.jp

    最近、弊社でもいくつかのサービスでStarmanが動き始めてます。リソース監視厨としてStarmanやStarletといったPreforkなPlackサーバにおいてもApacheのmod_status同様、使用されているプロセス数、アイドル中のプロセス数を当然知りたいわけです。CloudForecastでグラフにしたいわけです。 すでにcho45氏がその機能を実現しています。cho45++です。ただ、ステータス表示を行うMiddlewareの他にステータス情報の変更を行うためにStarmanやStarletの体に手を入れており、若干使いにくいという印象を持っていました。そこでMiddlewareだけで、Middlewareのできる範囲でステータスを変更・表示するPlack::Middleware::ServerStatus::Liteを書いてみました。ソースコードはgithubにpush

    otsune
    otsune 2010/07/02
  • 株式会社ライブドアに入社しました - blog.nomadscafe.jp

    先月末にミクシィを退職し、6月1日より株式会社ライブドアにて働かせていただくことになりました。 出社日2.0日目的な意味で。 ライブドアには以前からの知り合いのエンジニアも多くいたり、先月にはJPAの代表の牧さんが(再)就職をしていたり、同日入社にはアノPerlエンジニアもいます。それぞれが高い技術をもっている楽しみな職場です。ライブドアでの主な業務内容は前職に引き続きシステム運用を見ることになります。 Blogをはじめとするlivedoorのメディア、サービスを運用やスケーラビリティといった立場から支えて行きたいと思いますので、これからもよろしくお願いします。

    otsune
    otsune 2010/06/03
    出戻り・中途組だけでアメフトチームが
  • 株式会社ミクシィを退職しました - blog.nomadscafe.jp

    昨日tweetした通り、株式会社ミクシィを退職しました。正確には今月末までとなり、今は少ない有給消化期間です。次の会社は既に決まっていて、6月1日から新しい会社となります ミクシィにはちょうど4年間在籍しました。その間mixiはPVにして10倍以上という驚異的な成長をし、会社としてのミクシィも上場をするなどさまざまな経験をさせて頂きました。 自分だけでやったことではなく、もちろん他のエンジニアの協力のもとで行ったことですが、4年間の間に自分のミクシィでやっていたことをBlog等ですでに紹介したものを中心にいくつか書くと アプリケーションレベルでのDBのフェイルオーバ Apache modproxybalancerの導入 デプロイツールの作成 サーバ設定のバージョン管理化 Squid COSSの検証導入 プロフィール画像などSquid CARPを利用した分散構成対応 Nginxの検証 Var

    otsune
    otsune 2010/05/27
  • Kickstart内蔵、自動仮想マシン作成スクリプト - blog.nomadscafe.jp

    cobbler/koanを使えば良さそうなんだけど、DHCP/PXEが必要となりそうで、それらを使えない場所で簡単に仮想マシンを作成するスクリプトを書いてみた。動作する環境はCentOS 5.4でKVM。ネットワークはブリッジで設定されていることが前提です。 依存するモジュールはEPELを使うと簡単にインストールできる $ sudo yum install perl-HTTP-Server-Simple perl-Regexp-Common スクリプトの実行は以下 $ sudo perl ./build-virt.pl --private 仮想マシンのプライベートIP スクリプトを実行すると、kickstartを配布するためのwebserverをforkして、virt-installを実行します。OSイメージはftp.iij.ad.jpから取得するように固定で書いてしまっています。 scr

    otsune
    otsune 2010/03/23
  • local::libを使ってバンドルRPMを作る。 - blog.nomadscafe.jp

    PlackやAnyEventなどなど新しめのモジュールを使いたいんだけど、既存モジュールのrpmを作っていくのが面倒な場合に、それらのモジュール群をlocal::libを使ってまとめてどこかにディレクトリに入れるバンドルパッケージRPMができないかと考えてやってみた。 んで、できたので、specファイルをさらしてみる Summary: bundle package of Plack+AnyEvent Name: perl-bundle-plack Version: 0.3 Release: 1%{?dist} License: Artistic Group: Development/Libraries Source: http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.004009.tar.gz Patch10:

    otsune
    otsune 2010/02/20
  • WEB+DB PRESS Vol.55「大規模Webサービスの裏側」最終回 - blog.nomadscafe.jp

    偶数月なので、WEB+DB PRESSの季節です WEB+DB PRESSで連載させて頂いている「大規模Webサービスの裏側」はVol.55にて第六回となり、最終回です。最終回は「監視」です。 「監視」の切り口を死活監視とリソース監視にわけて紹介し、後半はNagiosの設定や、Nagosの分散構成の解説です。Nagiosの分散構成はあまり資料がないので、(必要かどうかはおいておいて)面白いんじゃないかと思います。 同じVol. 55には宮川さんによるPSGI/Plackの記事もあるので、楽しみです。 昨日のデブサミ2010でRedHatの平さんとVmwareの各務さんの仮想化インフラのセッションでもでてきましたが、ハードウェアを知ることがその上で動くさまざまなソフトウェアを構築・運用していく上でも大事です。そのハードウェアを知るためにも監視を行い、リソースの利用のされかたを知るというのが重

    otsune
    otsune 2010/02/20
  • memcachedのプロトコル変更の件 - blog.nomadscafe.jp

    memcachedに依存するシステムやコードを書く人は大嫌いな訳だけど、スケーラビリティを向上させてレスポンス時間の高速化には必須なmemcachedですが、最近のプロトコル変更には疑問を感じてしまう。 1.4.0では、こちらに書いた通り、いつの間にかdeleteのtimeoutがサポートされなくなった。なので、 delete key timeout noreply というコマンドが無効になって困ることになった。それでも delete key timeout というコマンドは、timeoutにどんなも文字列が入っていてもエラーになることはなかった。timeoutは効かないけど。 ここから1.4.4ではさらに悪化。timeoutが0でないとエラーになるようになった。つまり delete key 0 noreply delete key 0 は有効なんだけど、 delete key 10 がエ

    otsune
    otsune 2010/02/08
  • 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; } $

    otsune
    otsune 2010/02/05
  • アプリケーションがマルチスレッドでもマルチコアCPUを活かせない件 - blog.nomadscafe.jp

    もっと詳しい方のフォロー募集です アプリケーションがマルチスレッドになってもネットワーク処理が分散されなければマルチコアを活かせない典型的な例です。id:viverの古橋さんがs100kpsとしてあげていた件にも近いかも。 memcachedで現象を確認します。最近のmemcachedはマルチスレッドで動くようになっているので、まずはそれを確認します。 $ memcached-tool localhost stats|grep threads threads 4 スレッドが4つで起動しています。 負荷がそれなりにある状態(8000req/sec程度)で、コマンドラインでtopを開き、「1」キーを押して、CPUごとの使用率を表示します。(例はFedora8 kernel-2.6.23) Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0

    otsune
    otsune 2010/01/30
  • データベースサーバを複数台構成とか2010年代には流行らない - blog.nomadscafe.jp

    奥一穂さんの「ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない」にフォローのような感じで。 例によってタイトルは煽りです。 奥一穂さんのエントリーでは、「5,000万PV/Month」という見積もりでアプリケーションサーバの台数を1台と計算していますが、これからは「1,000万PV/Day」を超えるサイトが多く生まれてくると予想しています。どんなサイトかというと、mixiアプリやモバゲーなどにソーシャルゲームを提供するサイトです。 ソーシャルゲームサイトのキャパシティプランニングについては中澤さんのエントリーが参考になります。 The Art of モバゲー Capacity Planning The Art of Mixi-mobile-appli Capacity Planning 最も人気がでた場合には数千万から数億PV/Dayという数字がならんでいます。怖い怖

    otsune
    otsune 2010/01/12
  • Plack::Server::AnyEvent::Prefork - blog.nomadscafe.jp

    Preforkした上でAnyEventのloopを動かすPlack::Server::AnyEvent::Preforkを、先週のPlack Hackathonの時間で形にしてgithubにpushしました。 はなぼくろ師との共作です。 目的は、AnyEventでもマルチコアを使いたいよねという理由ですが、それほど一般的な利用はないと思います。plackupの方でprefork処理を行うとかいう話もあったりなかったりなので、しばらくCPANにはアップロード予定ありません。不足している部分もありますので、fork & patchウェルカムです Hello Worldだけのテストで生AnyEventとの比較 ベンチマークをしたサーバはVMware ESXi上の仮想マシン。一応CPU 2つ割当てある 起動はこんな感じ plackup -a hello.psgi --server AnyEvent

    otsune
    otsune 2009/12/06
  • UPSが壊れたっぽい。Femo,LIMILIC復旧 - blog.nomadscafe.jp

    日(2009/10/22)の午前5時頃より、BlogとFemo、LIMILICにアクセスができない状態になっていました。 利用していて頂いている方にご迷惑をおかけしました。 アクセスが出来なくなっていた原因は、自宅サーバが落ちていたということですが、なぜ落ちていたかというと、UPSが壊れたっぽいからです。 現在はUPSなしで動いてますので、停電があるとまた止まってしまう可能性があります。こちらの対策も早めに行うつもりです。 (そういや、ここ何年か停電を経験してないかも) これまで使っていたUPSは、三菱電機のFREQUPSの350VA製品。 実は6年ぐらい使っていました(ここが駄目 バッテリがもうだめだったのでしょう。交換考えないとなぁと思っていた矢先でした。 UPSが壊れて気になるのは、その廃棄方法です。調べると、鉛が入っているので通常のゴミとして捨ててはならないようです。 元祖ワシ

    otsune
    otsune 2009/10/23
  • WEB+DB PRESS Vol.53「大規模Webサービスの裏側」 第四回 - blog.nomadscafe.jp

    10月は偶数月。 そして偶数月といえば、こちら。 WEB+DB PRESSで連載させて頂いている「大規模Webサービスの裏側」の4回目がVol. 53に掲載されます。 第三回目のデータベース設計編に続いて実運用編となっています。 内容は、OSの設定、ファイルシステムのチューニングから、MySQLの設定と監視の話です。1000台を超えるサーバを管理・運用していく上でのポリシーなども混ぜて書いています。 紹介している設定などは大規模なサービスにだけ利用できるものではなく、小規模な運用でもパフォーマンス向上のために参考にできることが多いと思います。 松信さんのや、アメブロさんのと内容が被っていますが、8ページと手軽に読めると思いますので、ぜひお手をとって頂ければと思います。 その他Vol. 53には、mixiと同じくというか、規模がそれより大きいかもしれないYahoo!オークションの運用につ

    otsune
    otsune 2009/10/21
  • 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リクエストを行うサンプルを書い

    otsune
    otsune 2009/10/19
  • アメブロの中の人が書いたMySQLの本 - blog.nomadscafe.jp

    100億PVということで話題になったアメブロのMySQLが出たので買いました。 PVという言葉は定義によっていろいろ変るのであれですが、サーバで100億リクエストを処理していると考えるとやはり大規模なサービスであると感じます。 月間100億を秒に直すと、 10,000,000,000 / ( 3600 * 24 * 30 ) = 3,858.02469 大体4,000弱。ピークタイムではこの倍くらいになるでしょう。 の内容は、MySQLの基的な使い方に加えて、スケールアウトに適したアプリケーションの設計、運用に必要な監視やバックアップ、パフォーマンスチューニングについても丁寧に解説されています。 特に監視や負荷・障害対策は実際現場で経験をされた人の知識が詰まっていて良い感じです。 一つ気になったのは、MySQL 4.1、MyISAMを多く利用されているところです。 P4のコラムで触

    otsune
    otsune 2009/10/12
  • YAPC::Asia 2009で発表した件をブログに書いた件 - blog.nomadscafe.jp

    YAPC::Asia 2009で大規模画像配信とPerlについて発表しました。 会社のブログの方に資料公開しましたので、 このブログでも紹介です 一部パワポのアニメーション機能使っている部分が抜けていますので 会社ブログの方で公開しているPPTファイルも参照して頂けると幸いです 資料の中で、Image::Magickのベンチマークをしているのですが、その際画像サイズの変更のアルゴリズムについては触れていませんでした。 確かに画質は悪くなりますが、変換のアルゴリズムを変更するとスピードがあがります。 ImageMagickの画像の拡大縮小のアルゴリズムについては以下のページが参考になります。 りゃくえふ » Blog Archive » ImageMagickの画像の縮小 しかし実際、Image::Magickが重たいのは画像loadの時です。 Image::MagickのReadだけと、I

  • RemedieはIPv6でListenしたほうがいいんじゃないかの話 - blog.nomadscafe.jp

    AnyEventとかCoroあたりを知るために、RemedieのMacのbinary版を入れてみたりしているのですが、1つ気になった点がありました。 RemedieはBonjourをサポートしているので、起動すると自動でSafariのブックマークのBojourメニューに現れます。 ただ、ここからアクセスすることは出来ませんでした。 Bonjourに登録されたアドレスは、 http://kazeburomp.local.:10010/ Safariからでは接続ができなかったようです。 そこでtelnetを用いて、接続をできるか、確認すると、 % telnet kazeburomp.local. 10010 Trying fe80::21c:42ff:fe00:0... telnet: connect to address fe80::21c:42ff:fe00:0: Connection r

  • mod_libmemcached_cacheでApacheのcacheをmemcachedに保存する : blog.nomadscafe.jp

    mod_libmemcached_cacheでApacheのcacheをmemcachedに保存する Apacheのmod_cacheのキャッシュ保存先にmemcachedが使えればいいのにと長年思ってきましたが、mod_libmemcached_cacheがそれを実現してくれました。 しかも、libmemcachedを利用しているので、性能も高く、またConsitent Hashingも使えますし、バイナリプロトコルもばっちりです。 図にするとこんな感じ。revserse proxyのcacheがmemcachedになるので、cache効率が上がり、またApplicationサーバからも同じmemcachedが参照できるのでcacheを変更したりできるかもしれません。 導入 mod_libmemcached_cacheはgithubから入手できます http://github.com/a

    otsune
    otsune 2009/06/27
  • Image::Sizeで読めないjpegファイルへ対応するpatch : blog.nomadscafe.jp

    Image::Sizeで読めないjpegファイルへ対応するpatch このページにあるようなjpegファイルがImage::Size(3.1.1)でうまく認識ができないので対応patch書きました。 WX310SA(など)で映した写真の場合、jpegのヘッダ中でmarkerであるffが並ぶところがあるようで、Image::Sizeでそれを扱えません。ただ、普通の場合、Image::SizeがImage::Magickを呼ぶので気付きにくいかもしれません。サービスで使う時に、Image::Magickを呼ばれたくないので無理矢理切っていたため気付いた次第です。 ↓patch --- lib/Image/Size.pm.orig 2008-12-12 18:13:39.000000000 +0900 +++ lib/Image/Size.pm 2008-12-12 18:18:53.00000

    otsune
    otsune 2008/12/13
  • WWW::Curlで進捗表示しつつダウンロード : blog.nomadscafe.jp

    WWW::Curlで進捗表示しつつダウンロード 意味のないエントリー perl - LWP::UserAgentで進捗表示しつつダウンロード WWW::Curlだとcurlの機能でできるYo #!/usr/bin/perl use strict; use warnings; use WWW::Curl::Easy; use File::Basename; my $uri = shift || die "$0 http://example.com/big.iso [filename]"; my $filename = shift || basename($uri); open my $content, '>', $filename or die "$filename:$!"; open(my $header, '>', \my $header_data); my $curl = WWW::C

    otsune
    otsune 2008/11/22