Entries from 2007-12-01 to 1 month

Q4M の DELETE (あるいはメッセージの消費) の実装について

rev. 32 の段階では行のヘッダを write -> fdatasync してるけどこれは良くない。理由は fdatasync 中に他スレッドの read をブロックしてはいけない rev. 30 で、このように実装 そうなると、DELETE の fdatasync が完了する以前に、他スレッドから削除完了…

Q4M 最適化 ToDo

まずは基本的なところから。 リードロックとライトロックの分離 fdatasync の間、SELECT がブロックされるのはヒドすぎるw rev. 32 で対応 最初の rnd_next でメタ情報をスレッドローカルにコピーする SELECT 1回で mutex ロックを2回だけにすべき 後回し…

Q4M のBLOB実装してFC

何ができて何ができないかは README 参照のこと。http://mt.endeworks.jp/d-6/2007/12/q4m.html で dmaki さんが Q4M テストしてくれてるけど、実はさっき (rev. 24) まで blob 対応していませんでした。blob が動くか動かないかは、バッファオーバーランと…

InnoDB における fdatasync 失敗時の処理

abort() したり NULL ポインタにアクセスしたりしてプロセスを殺す。でいいらしい。

Q4M と fdatasync

rev.13 あたりでテストコードを足したりした。あと Linux でも make が通るようになった。 fdatasync をマジメにやっているので遅い。 当然だけど書込速度が 50 rows/sec. とかそんな感じ。 Pluggable Storage Engine の API にバルクアップデートの仕組みは…

Q4M のベンチマーク

rev 15 で測定。mysqlslap だといい感じ。 $ ../mysql-5.1.22-rc/bin/mysqlslap -S /tmp/mysql51.sock --concurrency=10 --iterations=100 --engine=myisam,innodb,memory,queue --auto-generate-sql Benchmark Running for engine myisam Average number of…

Q4M のディスクベースのコードが動き出した

結局、先頭行からの単方向リストにした (+お尻の位置をヘッダに書く)。なので、・行の消費は 1 write + 1 sync ・行の追加は 2 * (1 write + 1 sync)どうせ C/S で運用するんだし、ソケット通信のオーバーヘッドがある以上 mmap とかがんばらなくてもいいよ…

なぜRDBMSでMQを実現するのにプラグインが必要か

自分でも忘れがちなので。理由: 通常テーブルと LISTEN & NOTIFY_ONE では信頼性のあるメッセージの伝達が難しいから。 欠落がないようにしようと思ったら、サブスクライバから ACK を飛ばしてもらう必要がある サーバは、ACK を受信するまで、その行を他の…

Q4M

Kazuho Oku on Twitter: "P::C::MQ のバグ報告したし、独自MQの開発するかな (ぉ" って書いたら Toru Yamaguchi on Twitter: "@kazuho 明後日になると90%くらいの確率でリリースしましたエントリが挙がる悪寒" とか言われたので、なんとか リリース しました…

POE::Component::MessageQueue のバグ

最新版での話 (http://code.hackyourlife.org/bzr/dsnopek/perl_mq の revision 110) 送出する Stomp フレームの末尾にゴミ (0x0A 0x00) がつく でも Net::Stomp のパーサは torelant なのでなんとかなってる ただし、2つ目以降のフレームのメッセージ名に…

MySQL (MyISAM) で運用中のテーブルバックアップ

MyISAM だと --single-transaction が使えないため、普通に mysqldump するとロックがかかってしまって、サービスがストールしてしまう。つーわけでこうした。 MAX_ROW_ID=123456 BLOCK_SIZE=1000 mysqldump -u root --no-data db_name tbl_name for i in `p…

CGI で Authorization ヘッダが読めない理由と認証用クッキー

昔から CGI で Authorization ヘッダは読めないようになっていて、それが WSSE のような規格が使われちゃったりしちゃう原因のひとつにもなっていたりするわけですが。で、その理由は Apache の server/util_script.c あたりを見ると、以下のように書いてあ…

Re: クロスドメインのセキュリティ問題を OAuth で解決する

[あとで] タグをつけていたら、スターがついていた件。中途半端な反応ですみません。 ちゃんと検証してない思いつきレベルの話。JSONP や Flash の crossdomain.xml を使ったクロスドメインアクセスで機密情報を取得する場合は、(何も対策をしないと)機密…

上の続き

OAuth が使えるならサーバ同士で直接データをやり取りすればいいのに、わざわざクライアント側でやる必要あるの?というツッコミだと理解しました。僕もそれほどちゃんと考えていなかったので、この機会に考えてみました。 負荷軽減 … Consumer 側に負荷をか…

IO::Socket::INET のインストールメモ

perl 5.005 以前の場合は IO-1.20 以前が必要 Solaris で /usr/ucb/cc が使えない場合は perl Makefile.PL CC=gcc LD=gcc CCCDLFLAGS=-fpic OPTIMIZE=-O2