Entries from 2010-01-01 to 1 month

InnoDB で fsync しない方法と、そのメリット

InnoDB はデフォルトでは同期I/O *1だけど、 innodb_flush_method=nosyncっていう隠しオプションがあって、それを有効にすると MyISAM みたく fsync しなくなるよ。ってソースコードちら見した自分が言ってた。この設定がうれしいのって、どういう時だろう?…

はてなのサーバ運用は教科書的なスケールアウト手法?

はてなにおける SSD の実績 - mura日記 (halfrack) の感想。木を見て森を語るような話ですが、この iostat を見ていて興味深かったのが、 ボトルネックは SSD この状態だと iostat -x の ioutil は 100% にかなり近い値40%-50% 前後だと思う*1 CPU がスカス…

死んだプロセスのスタックトレースを自動収集するデーモンを書いた (そして、その出力を開発者に送ってあげると喜ばれるよという話)

死んだプロセス (あるいは kill したプロセス) の core イメージから自動的にスタックトレースを収集するデーモンを書いたので、これをセットアップしてサーバにインストールしとくといいかもです (kaztools/bt_cores at master · kazuho/kaztools · GitHub)…

それでも私が Perl を使いつづける理由

元ネタ: http://d.hatena.ne.jp/tokuhirom/20100120/1263958061なぜ俺が $@%* を使いつづけるのか。* とか良く分かってないけど。 システムプログラミングができる 例えば低水準I/Oが標準で用意されているとか。 gccがない環境にも入っている gccがない環境…

2010年代にはLVMスナップショットベースのバックアップとか流行らない (もしくはログ構造化ファイルシステムへの期待)

感想文です。タイトルはテンプレから。たとえばうちの環境(普段 20-80 IOPS くらいの負荷がかかっている HDD) で、blockdiff (参照: Kazuho@Cybozu Labs: blockdiff を使ったお手軽ホットバックアップ環境の構築 (Linux, MySQL, etc.)) を実行すると、バッ…

nopan っていうレポジトリから直接ソフトウェアをインストールするインストーラを作り始めた件

perl の場合、CPAN モジュールは sudo cpan -i Module の1コマンドでインストールできる。でも、svn や git レポジトリのコードは、チェックアウトして perl Makefile.PL && make all test && sudo make install とか、めんどくさい。なので、svn や git レ…

Perlでマルチプロセスデーモンを作るためのモジュール「Parallel::Prefork」に(Min|Max)SpareServers対応を追加した話 (もしくは read(2) / write(2) の atomicity)

Perl で複数のワーカープロセスを制御するためのモジュールとしては Parallel::ForkManager が古参なんだけど、このモジュールはプロセスを fork するだけで、シグナルを受信したらワーカープロセスを再起動とかそういうことができないので、自分は Parallel…

rsyncを使って、ログとかファイルをリモートサーバに退避する方法

rsync -az -e ssh --out-format='%n' src-dir remote:dest-dir > files_copied.$$ || exit $? rm -f `cat /tmp/files_copied.$$` || exit $?CentOS だと rsync -avqz でコピーしたファイル名だけ一覧で出たんだけど、Ubuntu 9 だと出なかったorz 上なら rsync…

DNS リゾルバに、FQDN 以外でのルックアップをさせない方法

クローラを動かしている DMZ の DNS のログを読んでたら、 2010-01-12 00:25:21.493412500 7f000001:bffd:1023 + 001c foobar.example.com.dmz.localみたいな、「FQDN + DMZ のドメイン名」の検索がいっぱい実行されてた。実在する FQDN であっても応答まで…

めんどうなのでディスク容量監視をワンライナーでcrontabに書いた

15 3 * * * perl -wle 'my $s = `/bin/df -k`; print $s if $s =~ m{^/dev/.* (9[0-9]|100)\%}m'df に限らず、コマンドの結果を正規表現で比較して問題があったらprint、ってのはcrontabで監視する時の基本的なイディオム要出典。もちろん、backquoteじゃな…