Entries from 2009-01-01 to 1 year
先のエントリ (ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない) ではボトムアップに煽った書き方をしたけど、自分がトップダウンでどういうふうに捉えているかについて。以下、あくまでも私見です。いわゆるネット業界は1990年代後半…
タイトルは煽り入ってますが。仮に動的ページを生成するのにかかる時間が1秒、そのうちデータベースやmemcached等リモートサーバへの問い合わせ時間を除くいたCPUの処理時間が0.1秒とする。また、ピークのリクエスト処理量は、平均の2倍とする。そうすると…
Tritonn のホットバックアップ環境を構築しようと思って調査。結論から言うと 漢(オトコ)のコンピュータ道: MySQLバックアップ頂上決戦!! LVMスナップショット vs InnoDB Hot Backup の「MyISAMをスナップショットでバックアップ」でよさそう。確認したこ…
Apache の設定ファイルおける AddType を Plack でどうやるのか。Plack::App::File (あるいはそれをラップしている Plack::Middleware::Static) は、拡張子から Content-Type を決定するのに MIME::Types を使っている thanks to miyagawa-san。なので、たと…
Plack::Server::Standalone 系を使ってウェブアプリケーション開発と運用が楽になる話 - JPerl Advent Calendar 2009 Perl のローレベルエラー処理 (もしくは Errno.pm のススメ) - JPerl Advent Calendar 2009 さすがに今年はこれ以上書かないと思う。どっ…
$ echo うお座 | mecab う 感動詞,*,*,*,*,*,う,ウ,ウ お座 名詞,一般,*,*,*,*,お座,オザ,オザ EOS $ その発想はなかった...
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…
Perl等のLLでウェブアプリケーションサーバを書いていると、普通はマルチプロセスモデル (apache なら prefork とか) で運用することになると思う。で、それらがどれだけメモリを使っているか、っていうのはチューニングにおいて重要になってきたりする (ん…
「NoSQL」というバズワードが注目を集める昨今、私も「http://shibuya.pm.org/blosxom/techtalks/200911.html」に登壇の機会をいただき、SQL派の立場で発表したりしています (発表資料)。ですが、言うまでもないことですが、RDBMSやKVSに限らず、全てのソフ…
RSSリーダーとかブックマークサービスとかアクセス統計サービスとかを作っていると、クローラの運用は必須。クローラは保護したいから、当然DMZに設置する。でもクローラがDMZ内にある他のホストにアクセスできちゃうとまずいわけで。で、クローラからのアク…
だって、ユーザーは全てのサーバ実装を使いたいわけじゃないから。例えば Plack::Server::Standalone::Prefork は Parallel::Prefork に依存してるけど、これを Makefile.PL に書いてないのは意図的、ということ。FCGI にしても同じ。全部インスコするには T…
例によって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
_ djb が自作ツールの更新を放棄してからずいぶんたって、qmail やら djbdns やらはゆっくりと置き替えが進んでいるようだ。が、いまだに使い続けられているものもある。具体的には daemontools。いまだに daemontools を 使うネタが書かれているのを見て絶…
Re http://d.hatena.ne.jp/perlcodesample/20091130/1258979624, http://mt.endeworks.jp/d-6/2009/12/scriptsubimport.htmlスクリプトとコードとテストを単一のファイルにまとめたい*1という需要が、かねて自分の中であったので教えを請うた結果、以下のよ…
今更ですが。 Q4M を使用していると、$dbh->execute がキュー待ちの間ブロックしてくれます。これは便利なのですが、SIGINT をうけとったら終了してほしい。通常の処理としては SIGINT をうけとったら終了します。ですが、$SIG{INT} = sub { warn "\シグナ…
I/O負荷が高い時に、キャッシュに入ってないコマンドを実行しようとするとひっかかる。なんでかなーと思って調べてみたら、XenServer のデフォルトは以下のとおりだった。 hdparm -W 1 dom0 の I/O エレベータは noop domU の I/O エレベータは noop SATA 向…
諸般の事情により、XenServer 5.5にeSATA(Si3132)経由でIntel X25-Mをつないだので、ついでにベンチマーク。データベース系の用途ということで、例によって randombench -b 16 -c 1 -f 102400。 実機(旧) XenServer(DomU) ← (16並列) Read (MB/sec) 38.0 32.…
一昨日、自作サーバカンファレンスに参加してきました。とてもおもしろく色々刺激をうけました。はてなの田中さん楽天の方々始め、スピーカーの皆さんありがとうございました。ただ分からなかったのは、サーバを自作する必然性がどの程度あるのかな、という…
自作のサーバプログラムに、いちいち setuid とか setsid とかログローテート機能とか実装するのめんどくさいわけで。だから daemontools を使って管理してるわけですが、だったら、いっそ全部のデーモンを daemontools で一括管理したい。ちょうど、reverse…
Kazuho@Cybozu Labs: リモートからXenのDomUとかLVMやファイルを差分バックアップするスクリプトを書いた のリストア手順。 どこにもアタッチされていない仮想ディスクを作成 xe vdi-list して uuid からデバイスファイル名を特定 lvchange -ay dev してLVを…
ストレージの追加 # 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が出…
仮想ディスクのストアをLVMにしている場合、XenServerレベルでのスナップショットを撮る毎にLVの数が増える スナップショットを削除しても、LVは1つには戻らない だから Kazuho@Cybozu Labs: リモートからXenのDomUとかLVMやファイルを差分バックアップする…
C++のプログラムを書いててGCを使いたくなるようなケースにぶつかったことは、ここ数年ないんですが、Goの絡みで、そういえばBoehm GCをC++のスマートポインタっぽく使えたら便利なのかな、とか思った。書くとしたら、こんな感じだろうか。換言するならば、…
dev.mysql.com から MSI 形式のインストーラをダウンロード 開発用ヘッダやライブラリも含めて、mysql をインストール mysql の scripts\mysql_config.pl を bin\ にコピー 管理者権限で cmd.exe を起動して cpan, force install DBD::mysql
InnoDBはMyISAMと比較して安全(OSクラッシュや電源断が発生してもテーブルが壊れない)分、書き込みが遅い。データベース屋さんからすると、それは当然のことでMyISAMがおかしいんだ、ということになり、だからバッテリバックアップ機能のついたRAIDカードを…
http://github.com/kazuho/vip/よくperlとかで、 $ perl print "テストコードを色々..."; ... ^Dとかやってテストするけど、コード書き間違えちゃったりした時に編集できなくてめんどいのと、書いたコードが失われちゃうのが嫌だなあと思ってた。で、ついに…
追記: マジメな比較はこちら:Open database life: MyISAMとInnoDBのどちらを使うべきか MyISAMだとPostgreSQLと並べられた時なんか恥ずかしいww下向いちゃうしwwウェブサイトにはせめてInnoDB使って欲しい・・・勉強会とかで発表されたら・・・・もう最…
[迷信] 0xe-0xe はゼロ | 株式会社きじねこ単に GCC のバグじゃないのかなー。そもそも、 手元の規格 *1 だと、pp-number に 'x' は含まれない だから '0xe-0xe' は pp-number として評価されないはず BNF を見ると pp-number は #if とかプリプロセッサディ…
Benchmark.pm の cmpthese は手軽に速度の比較ができるのでとても便利。でも、そもそも何のパフォーマンスを比較しているのか? ソースコードを読めばわかるけど、 perl プロセスのCPU使用時間 あるいは、上記+子プロセスのCPU使用時間 を測定している。換…
ベンチマークを取る際に、それぞれの手法ごとに初期化や終了処理が必要なんだけど、それら処理を除いた、コアの部分の数値を比較したいことって結構ある。そういう場合は、以下のように書けばいい。ということを理解したのでメモ。 #! /usr/bin/perl use str…