Entries from 2010-01-01 to 1 year
入力としてundefあるいは値を複数受け取り 結果として値の最小値(あるいは値が全てundefの場合はundef)を返す という処理をどう書くのがいいか? 自分が思いつくのは以下のコードだけど、もっといい書き方あるかなぁ(簡潔明快であることが望ましい)。 my…
って処理を書きたい場合がある*1けど、そういう場合は、 my $access_allowed = eval { require Authen::Libwrap } && host_ctl('tiarra', $sock); みたいな感じでよかったらしい。って id:tokuhirom に教えてもらった *1:たとえば Tiarra (あるいはPerl) か…
諸般の事情で、ついに Tiarra ユーザーになったんですけど、Dynamic DNS を使って SSH アクセスを制限する方法 - kazuhoのメモ置き場 に書いたようにサーバのアクセス制限を hosts_access 使ってやってるので Tiarra についても同様にしたい。Perl の場合は …
だいたいこんな感じ。結局使わないコードだけど。alarm(0) を呼んでからセットしてるのは、$SIG{ALRM} の差し替え中にシグナルが飛んでくる可能性を考えて。このあたりは自分がセットするシグナルハンドラの仕様によっては、高速化の余地があるはず。 sub cr…
通信相手のサーバが HTTP/1.1 対応と確認できるまでは 1.0 と互換性のない chunked encoding は使えないし でも確認が取れた接続を使い回す = HTTP/1.1 の持続的接続を使い回して POST / PUT するってことだけど、持続的接続のタイムアウト条件は、TCP 接続…
今年の YAPC::Asia も大盛況。"Welcome Perl" というテーマにふさわしく、ハッカーの人たちが何をやっているのかに留まらない、幅広い実用的な話を聞くことができました。その好例が峰松さんのLT「基幹システムがperlでどうしてこうなった」 であったり neko…
lingering close がなんであるかについては、Apache Performance Tuning - Apache HTTP Server Version 2.2 を参照。 Apache 2.2.16 と lighttpd 1.4.28 は、必ずアプリケーションレイヤでの lingering close を行う Apache は2秒、lighttpd は5秒 nginx 0.8…
id:gfx に聞かれたので。Shift+Z を2回押すと、トップのバーが消えて画面が広くなる。便利。それだけ覚えてる
Ajaxを使うためにはページ内リンク (hash fragment=URLの#以降) を使うのが一般的*1 hash fragmentはサーバに送信されないから、JavaScript非対応のブラウザだと動作しない 特にサーチエンジンのクローラ等で問題になる*2 そこで Google は、#! が含まれる U…
前回の続き。9ヶ月経過。現在のヒットポイントは83/100。あと、データセットが大きくなってきた分I/O負荷が上がってる。一見まだ余裕ありそうだけどSSDなので、書き込みが増えると読み込みがサチる点注意が必要。 $ sudo smartctl -d ata -a /dev/sdc smart…
iostat -x の %util を監視してしきい値を超えたらアラートメール飛ばしたいなぁと思って crontab 書いた。こんな感じ。 */5 * * * * perl -wle 'my $s = `/usr/bin/iostat -xk /dev/sd[abc] 270 2 | tail -4`; print $s if $s =~ m{\s(?:[0-9]{3}|[5-9][0-9…
perldoc POSIX には、 _exit This is identical to the C function "_exit()". It exits the program immediately which means among other things buffered I/O is not flushed.としか書いてないけど、もちろん global destruction も走らない。 use strict…
http://d.hatena.ne.jp/tokuhirom/20100813/1281666615 の件ですが、IPC::Open3 の使い方が気になったので、勝手に添削 (c) dankogai。 use IPC::Open3; ... my($wtr, $rdr, $err); my @cmd = ($^X, (map { "-I$_" } grep { !ref $_ } @INC), '-c', $file); …
/etc/network/interfaces に auto eth0 iface eth0 inet static address 172.x.y.10 netmask 255.255.255.0 network 172.x.y.0 broadcast 172.x.y.255 gateway 172.x.y.254 auto eth0:0 iface eth0:0 inet static address 172.x.y.11 netmask 255.255.255.0 …
exec 5> >(cronolog ...) # fd=5 の出力を cronolog へ echo "hello" >&5 # cronolog へ出力 exec 5>&- # fd=5 を閉じるServer::Starter 経由で起動するプロセスの出力を統計処理したりする場合には便利かも。アクセスログ等の追記なら、http://d.hatena.ne.…
測定環境は下記のとおり。 ホスト: Ubuntu 9.10 Server (amd64) CPU: AMD Opteron 2218 x2 チップセット: nVidia MCP55Pro SSD: Intel X25-M 80GB (SSDSA2MH08) Mode (concurrency) KVM Guest KVM Host % Write (1) 320 521 -39% Write (4) 378 467 -19% Wri…
前回のは、どうも KVM を動かしてるハードウェアの問題っぽい。Mac Pro だと再現しなかったので、そっちの環境でベンチマーク。サーバ負荷が前回よりも軽い環境での比較ですし、ホストの負荷も XenServer と KVM で異なるので、絶対値比較には使えないとかも…
C言語に初めて触ってから20年のロートルですが今まで知りませんでした。man fopen より。 The fopen() function opens the file whose name is the string pointed to by filename and associates a stream with it. ``a'' Open for writing. The file is cr…
BIOS のデフォルト設定は「Active Power Controller」なので、省電力On。OS からは変更不可能。この設定を「OS Control」に変更すれば、cpufreq-set コマンドを使って、動的に CPU クロックを観測/変更できるようになる。Linux (Ubuntu 10.04) のデフォルト…
試用アカウントをいただいたので (ありがとうございます!) ニフティクラウドの I/O ベンチマーク。例によって randombench。100MB のファイルへの 16KB ランダムアクセス性能 (単位は IOPS, xfs;nobarrier;noatime)。 concurrency 1 4 16 read 1370 1260 14…
AWS はコンポーネント指向の IaaS 現時点でのクラウドコンピューティングの大勢は、リソースをオールインワンで提供すること。一般ユーザーにとっての SaaS なアプリケーションは、もちろんそうだし、開発者にとっての Google App Engine も然り。Amazon AWS…
Core 2 Duo @ 2GHz。単位はMB/s。 ゼロファイル ランダムファイル gzip 64.1 12.9 gzip -1 104 13.2 lzop 307 32.5
運用開始してから100日強の X25-M G2R5。3年くらいは持ちそう。 $ sudo smartctl -d ata -a /dev/sdc smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START …
Twitter でつぶやいたことだけど。 ウェブの本質はメッセージのルーティング(と保存)だし、最重要なアーキテクチャパターンは空間と時間の分割アルゴリズム。マルチコアvs時分割マルチタスク、L3(もしくは携帯のセル)と CSMA等、リバースプロキシとAppサーバ…
どちらのサーバも、秒間数十の HTTP 接続をハンドリングしている状態で、ping -c 100 で測定した平均値。 ホスト ゲスト XenServer*1 0.138 1.295 KVM*2 0.130 10.590 KVM のゲストだけが遅い。常に遅いっていうんじゃなくて、時々ひっかかる感じ。ping の出…
HTTP の持続的接続の功罪について はじめに、HTTP の持続的接続 (keep-alive) のメリットについて。持続的接続を使うメリットは、以下の2点。 TCP 接続の確立にかかる時間の節約*1 TCP の接続と切断に必要な資源 (CPUとネットワーク) の節約 ウェブブラウザ…
以前 (2.6.31 まで?) は以下の挙動*1。 最初のペイロードを受信するまで SYN_RECV ステート クライアントの ACK (TCP ハンドシェイクの最後のパケット) を受信していたとしても、SYN-ACK を送り続ける 190 秒たったら、サーバ側は TCP 接続確立失敗と認識 ク…
測定環境等は前の記事と同じ。ゲスト OS が Windows の場合は virtio のブロックデバイスドライバは使えないので、IDE エミュレーションになる。OS からは MWDMA2 (max 16.7MB/s) として見えるが、実際はもっと速い。以下のような感じ。ゲスト OS のライトバ…
測定環境は下記のとおり。 Ubuntu 9.10 server AMD Opteron 2218 x2 nVidia MCP55Pro Hitachi HDS72101 ゲストは LVM 上に構築 4並列でのランダムアクセス (16KB) ホスト ゲスト (cache=writethrough) ゲスト (cache=none) Read 207.7 138.3 187.4 Write 13…
Q4M には、キューファイルを定期的に圧縮するコンパクションという処理がある コンパクションが走ってる間は INSERT も queue_wait も固まる コンパクションの実行時間は、キューに滞留してるデータサイズに依存 *1 第2点のうち、INSERT が固まっちゃうのは…