Entries from 2009-01-01 to 1 year

ウェブ業界の15年、これからの10年 (Re ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない)

先のエントリ (ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない) ではボトムアップに煽った書き方をしたけど、自分がトップダウンでどういうふうに捉えているかについて。以下、あくまでも私見です。いわゆるネット業界は1990年代後半…

ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない

タイトルは煽り入ってますが。仮に動的ページを生成するのにかかる時間が1秒、そのうちデータベースやmemcached等リモートサーバへの問い合わせ時間を除くいたCPUの処理時間が0.1秒とする。また、ピークのリクエスト処理量は、平均の2倍とする。そうすると…

Tritonn のホットバックアップ(とsync 3回伝説)

Tritonn のホットバックアップ環境を構築しようと思って調査。結論から言うと 漢(オトコ)のコンピュータ道: MySQLバックアップ頂上決戦!! LVMスナップショット vs InnoDB Hot Backup の「MyISAMをスナップショットでバックアップ」でよさそう。確認したこ…

Plackで静的コンテンツのMIME型を指定する方法

Apache の設定ファイルおける AddType を Plack でどうやるのか。Plack::App::File (あるいはそれをラップしている Plack::Middleware::Static) は、拡張子から Content-Type を決定するのに MIME::Types を使っている thanks to miyagawa-san。なので、たと…

Plack::Server::StandaloneとErrnoの話をjperl advent calendarに書いた件から今年を振り返ってみる

Plack::Server::Standalone 系を使ってウェブアプリケーション開発と運用が楽になる話 - JPerl Advent Calendar 2009 Perl のローレベルエラー処理 (もしくは Errno.pm のススメ) - JPerl Advent Calendar 2009 さすがに今年はこれ以上書かないと思う。どっ…

うお座

$ echo うお座 | mecab う 感動詞,*,*,*,*,*,う,ウ,ウ お座 名詞,一般,*,*,*,*,お座,オザ,オザ EOS $ その発想はなかった...

InnoDBのテンポラリテーブルとinnodb_file_per_tableの相性が悪いっぽい

tmpdirをtmpfsにしてても、LOCK_openを2秒間握ったままとかorz... innodb_file_per_tableをオフにしたら、ぐっと症状が改善した。なお、環境は MySQL 5.1.41 (linux, x86_64, innodb_plugin)参考: Slow DROP TABLE - Percona Database Performance Blog (tha…

linuxで httpd が使ってるメモリ総量を調べる話

Perl等のLLでウェブアプリケーションサーバを書いていると、普通はマルチプロセスモデル (apache なら prefork とか) で運用することになると思う。で、それらがどれだけメモリを使っているか、っていうのはチューニングにおいて重要になってきたりする (ん…

RDBMSでもNoSQLでもなく、「手段としてのMySQL」について。12/18(金)のイベントで話します

「NoSQL」というバズワードが注目を集める昨今、私も「http://shibuya.pm.org/blosxom/techtalks/200911.html」に登壇の機会をいただき、SQL派の立場で発表したりしています (発表資料)。ですが、言うまでもないことですが、RDBMSやKVSに限らず、全てのソフ…

iptablesのownerモジュールでクローラを安全に運用する話

RSSリーダーとかブックマークサービスとかアクセス統計サービスとかを作っていると、クローラの運用は必須。クローラは保護したいから、当然DMZに設置する。でもクローラがDMZ内にある他のホストにアクセスできちゃうとまずいわけで。で、クローラからのアク…

Plackは各サーバ実装の依存関係を「意図的に」requireしていない

だって、ユーザーは全てのサーバ実装を使いたいわけじゃないから。例えば Plack::Server::Standalone::Prefork は Parallel::Prefork に依存してるけど、これを Makefile.PL に書いてないのは意図的、ということ。FCGI にしても同じ。全部インスコするには T…

Intel X25-M (160GB, 34nm) のベンチマーク

例によって16KBランダムアクセス。コントローラは MCP55 Pro。速い。仮想化してないのと、内蔵のまともなコントローラ使ってるからかなぁ。 並列度 Read (MB/sec) ← IOPS Write (MB/sec) ← IOPS 1 61.8 3,950 14.1 902 16 158 10,100 14.0 893

なぜ daemontools を使うのか

_ djb が自作ツールの更新を放棄してからずいぶんたって、qmail やら djbdns やらはゆっくりと置き替えが進んでいるようだ。が、いまだに使い続けられているものもある。具体的には daemontools。いまだに daemontools を 使うネタが書かれているのを見て絶…

ドキュメントとテストコードつきのPerlスクリプトを書く方法

Re http://d.hatena.ne.jp/perlcodesample/20091130/1258979624, http://mt.endeworks.jp/d-6/2009/12/scriptsubimport.htmlスクリプトとコードとテストを単一のファイルにまとめたい*1という需要が、かねて自分の中であったので教えを請うた結果、以下のよ…

Re: Perl5 の signal 処理と DBI と Q4M

今更ですが。 Q4M を使用していると、$dbh->execute がキュー待ちの間ブロックしてくれます。これは便利なのですが、SIGINT をうけとったら終了してほしい。通常の処理としては SIGINT をうけとったら終了します。ですが、$SIG{INT} = sub { warn "\シグナ…

VMMのI/Oスケジューラ (に関する一般論と XenServer の場合)

I/O負荷が高い時に、キャッシュに入ってないコマンドを実行しようとするとひっかかる。なんでかなーと思って調べてみたら、XenServer のデフォルトは以下のとおりだった。 hdparm -W 1 dom0 の I/O エレベータは noop domU の I/O エレベータは noop SATA 向…

XenServerのI/Oパフォーマンス

諸般の事情により、XenServer 5.5にeSATA(Si3132)経由でIntel X25-Mをつないだので、ついでにベンチマーク。データベース系の用途ということで、例によって randombench -b 16 -c 1 -f 102400。 実機(旧) XenServer(DomU) ← (16並列) Read (MB/sec) 38.0 32.…

自作って得なのかなと思って計算してみた (自作サーバカンファレンス感想)

一昨日、自作サーバカンファレンスに参加してきました。とてもおもしろく色々刺激をうけました。はてなの田中さん楽天の方々始め、スピーカーの皆さんありがとうございました。ただ分からなかったのは、サーバを自作する必然性がどの程度あるのかな、という…

Apache を daemontools で管理する

自作のサーバプログラムに、いちいち setuid とか setsid とかログローテート機能とか実装するのめんどくさいわけで。だから daemontools を使って管理してるわけですが、だったら、いっそ全部のデーモンを daemontools で一括管理したい。ちょうど、reverse…

blockdiff_backupしたLVMスナップショットをXenServerにリストアする方法

Kazuho@Cybozu Labs: リモートからXenのDomUとかLVMやファイルを差分バックアップするスクリプトを書いた のリストア手順。 どこにもアタッチされていない仮想ディスクを作成 xe vdi-list して uuid からデバイスファイル名を特定 lvchange -ay dev してLVを…

XenServerへのストレージ追加と削除

ストレージの追加 # xe sr-create name-label=sdb type=lvm device-config:device=/dev/sdb ストレージの削除 # xe pbd-list (uuidを確認) # xe pbd-unplug uuid=... # xe pbd-destroy uuid=... # xe sr-forget uuid=...なんらかの原因で解放されないLVが出…

XenServer 5.5のスナップショットとLVMと領域回収の話

仮想ディスクのストアをLVMにしている場合、XenServerレベルでのスナップショットを撮る毎にLVの数が増える スナップショットを削除しても、LVは1つには戻らない だから Kazuho@Cybozu Labs: リモートからXenのDomUとかLVMやファイルを差分バックアップする…

Boehm GCをC++のスマートポインタっぽく使う話

c++

C++のプログラムを書いててGCを使いたくなるようなケースにぶつかったことは、ここ数年ないんですが、Goの絡みで、そういえばBoehm GCをC++のスマートポインタっぽく使えたら便利なのかな、とか思った。書くとしたら、こんな感じだろうか。換言するならば、…

Strawberry PerlにDBD::mysqlインストール

dev.mysql.com から MSI 形式のインストーラをダウンロード 開発用ヘッダやライブラリも含めて、mysql をインストール mysql の scripts\mysql_config.pl を bin\ にコピー 管理者権限で cmd.exe を起動して cpan, force install DBD::mysql

(特にMyISAMを使っていた)ウェブ屋さんがInnoDBを使う場合の設定項目

InnoDBはMyISAMと比較して安全(OSクラッシュや電源断が発生してもテーブルが壊れない)分、書き込みが遅い。データベース屋さんからすると、それは当然のことでMyISAMがおかしいんだ、ということになり、だからバッテリバックアップ機能のついたRAIDカードを…

vipっていうviラッパー作った

http://github.com/kazuho/vip/よくperlとかで、 $ perl print "テストコードを色々..."; ... ^Dとかやってテストするけど、コード書き間違えちゃったりした時に編集できなくてめんどいのと、書いたコードが失われちゃうのが嫌だなあと思ってた。で、ついに…

彼氏がMyISAM使ってた。別れたい…

追記: マジメな比較はこちら:Open database life: MyISAMとInnoDBのどちらを使うべきか MyISAMだとPostgreSQLと並べられた時なんか恥ずかしいww下向いちゃうしwwウェブサイトにはせめてInnoDB使って欲しい・・・勉強会とかで発表されたら・・・・もう最…

「0xe-0xeはゼロという迷信」は本当なの?

[迷信] 0xe-0xe はゼロ | 株式会社きじねこ単に GCC のバグじゃないのかなー。そもそも、 手元の規格 *1 だと、pp-number に 'x' は含まれない だから '0xe-0xe' は pp-number として評価されないはず BNF を見ると pp-number は #if とかプリプロセッサディ…

サーバやI/O待ちを含むベンチマークを Benchmark::cmpthese で比較してはいけない、という話

Benchmark.pm の cmpthese は手軽に速度の比較ができるのでとても便利。でも、そもそも何のパフォーマンスを比較しているのか? ソースコードを読めばわかるけど、 perl プロセスのCPU使用時間 あるいは、上記+子プロセスのCPU使用時間 を測定している。換…

初期化とか終了処理とか除いたベンチマークの取り方

ベンチマークを取る際に、それぞれの手法ごとに初期化や終了処理が必要なんだけど、それら処理を除いた、コアの部分の数値を比較したいことって結構ある。そういう場合は、以下のように書けばいい。ということを理解したのでメモ。 #! /usr/bin/perl use str…