« 2007年10月 | メイン | 2008年04月 »

2007年11月 アーカイブ

2007年11月02日

Slashdot's HW/SW Infrastructure

TECHメールに投げたのをブログにもちゃんと書いて見よう。

もちろん Slashdotからのなんの許可ももらっていないので、

言われたら消すモードで...

-------------------------------------------------------------------------------

Slashdot's Hardware 構成

- California Bay Areaにある Savvisっていう所でLevel-AデータセンタのHostingを受け、Networkは二つの Gigabit Uplinkを持っている

- CentOSとLVSを使う P4 Xeon 2.66Ghz, 2G RAM, 2x80GB IDEの負荷分散システム x 2。

- ReadHat 9を使う16台の "Web Server (2 Xeon 2.66Ghz, 2G RAM, 2x80GB IDE )"で構成、全部 2 Xeon 2.4Ghz, 2G RAM, 4x36GB 15K RPM SCSIのスペックの NFS Server Volumeを NFSに Mountする

- 2 Dual Opteron 270, 16GB RAM, 4x36GB 15K RPM SCSIスペックの DBサーバーが CentOS4で運営
1台のWriteができるDBを中心にして、他は Readonly専用のDBサーバーに replicationする構造
Readonly専用のDBサーバーは 2 Dual Opteron 270, 8GB RAM, 4x36GB 15K RPM SCSIのスペックをもっている


Slashdot's Software 構成

- HTTP Requestは pound(http://www.apsis.ch/pound)っていう reverse proxyで入り、これはどのWeb Serverへ渡すかだけを決定

- poundはトラフィックを Apacheで運用してる 16台の Web Serverへ送る, 1台は HTTPSを処理、他は一般処理をする

- 15台のWeb Server中 2台は 静的ページ, 4台は 動的ページ, 6台は動的コメントページ, 3台は他の動的スクリプト(ajax, tag, bookmarks.. etc..)に対応している
こういう風に分離した理由は性能と特定ページがのDDos攻撃を受けているときに他の部分はちゃんと動作を保障するためだと...

- httpd Level CachingとMaxClients Tuningなどは効率性の理由で分離 => Web Serverの負荷は RAMではなく、CPUだから

- MaxClients値(動的 5-15, 静的 25)はなんかおかしいと思われるがSlashdotではRequestをはやく処理しなきゃ、もっと大幅のRequestがもっと早くCPUの性能を食うからだと

- Apacheはまだ 2.0へUpgradeする理由がないのでApache 1.3を使ってあり、 mod_perlとlingerdをコンテンツ伝達の時 RAMの解除保障のため使う(?)

- bot対応のため mod_auth_useragentの様な非標準モジュールを使ってる

- Slashっていう Slashdotを運営する Perl Opensource Codeを使ってる
(http://slashcode.cvs.sourceforge.net/slashcode/slash/)からダウンロード出来る。

- DBへのアクセスは Slashの SQL API(DBD::mysql, DBIを継承したSlashDot 専用)

Apache::DBIを使わず、 connect_cached(http://search.cpan.org/~timb/DBI/DBI.pm#connect_cached)を使う
だが、実はメイン Connection Cacheは Connectionを維持するオブジェクトで、サイズが大きくないデータはこういうオブジェクトから使われる

- 絶対 statementハンドルは使わない。 11個の方法のSELECTと他の方法で結果を操作して Perl Data Structureからもらう(?)

- placeholders((http://search.cpan.org/~timb/DBI/DBI.pm#Placeholders_and_Bind_Values)は使わない。
- Replicationを使う
- memcachedを使う(? bolt-on)。試しにmemcachedを使う時, 三つの大きいデータタイプ(users, stories, comment text)のCachingでスゴいPerformanceを味わった。
そしてCachingがこんなことにメリットがあることをちょっと確信した。
Memcachedのメインで使うのはデータオブジェクトを得たり、設定したら(set/get)すること、 だからかな? SlashはBottleneckとかはまったくない。

- ALTER TABLEの使わないように。。。


------------------------------------------------------------

大体、このぐらいに....

Low costのDB Serverでも ちゃんとコード書いて、 Memcachedと OpensourceのDB Softwareと Moore's Law(ww)があればかなり大きいサイトを作れると...


そしてSlashdotのメインソングを紹介!

まー slashdotは .comではなく .orgですけど...;

http://meta.slashdot.org/article.pl?sid=07/10/22/145209

2007年11月21日

変わった検索サイトの「しあわせさ〜ち」を公開しました

ちょっと変わった検索サイトのしあわせさ〜ちをリリースしました。
sachi.png

どこが変わっているかと言うと、画面右上にustreamの画面を埋め込んであります。
キーワードを入れて検索すると、このustream上にリアルタイムでキーワードが流れます。

このキーワードを流している機械は、VFDというディスプレイデバイスで、キーワードが検索されると、Gearman経由でVFDを繋げているマシンにキーワードを流します。
流されたキーワードをDevice::VFD::GP1022というCPANモジュールを使ってVFDデバイスに文字列を流し込んでいます。
そして、そのVFDに写った文字をWebカメラで撮影してustreamに配信をしています。

とっても簡単な仕組みですね。

GearmanのworkerでVFDの制御しているのですが、色々事情があってgearmandからtaskが送られて来るタイミング以外でも別のイベントをworkerで実行させたかったので

local $SIG{ALRM} = sub {
    alarm 0;
    my $vfd = Device::VFD::GP1022->new( '/dev/ttyS0' );
    if( scalar @{ $message_queue } ) {
        my $message = shift @{ $message_queue };
        if (time - $message->{recev_time} > 10) {
            alarm 0.01;
            return;
        }
        $vfd->message( vfd_encode{ SPEED 1; STR $message->{keyword} . '     ' } );
    } elsif( $vfd->is_scroll ) {
    } else {
        my @tmp = shuffle @{$message_stack};
        $vfd->message( vfd_encode{ SPEED 1; STR shift(@tmp) . '     ' } ) if @tmp;
    }
    if (@{ $message_queue }) {
        alarm 0.01;
    } else {
        alarm 0.5;
    }
};

alarm 1;
$worker->work while 1;
のような形で無理矢理割り込み処理を入れてVFDデバイスを制御する事にしました。
この辺りの詳細については今度開催される運用カンファレンスにて発表する予定です。

さて、このデバイス、秋月電子で普通に買うと色々と工作が必要になります。
今回は、このような工作が最も得意なスタッフに協力して頂いて、とても素敵なパッケージを作っていただけました。
20071114144829.jpg
20071114144906.jpg
VFD単体だけなら3,000円と、とても安いので今回のサイトの様に応用しやすいのですが、いかんせん半田付けがめんどくさかったり、ケースが無いからケース作るのが大変だと思います。

以上の理由と、それなりに結構需要がありそうなので、殆ど原価で希望者にVFD(電源,ケース)キットを譲ってはどうか?という話が社内で出て来ています。
今回のケースの原価は、 秋月でのVFDデバイス購入費: 5,000円
箱: 9,380円
アクリルパネル: 400円
内蔵電源モジュール: 700円
スイッチとかネジとか小物: 500円
合計: 15,980円
です。
若干ケースに材料費がかかりすぎているので、もっと安くする方法を考えている所です。
希望者数が纏まるなら、さらに原価を押さえる事も出来そうです。
PCとの接続は現状RS-232Cのストレートケーブルにて行っていますが、USB<->シリアルのチップを内蔵する事も出来ますので、応相談で。

VFDを制御するCPANモジュールはLinuxとMacBookで動作する事を確認しています。(たぶんWindowsでも動くはず)、なのでこのキットさえ手に入れれば、ニュース記事をVFDに流し込んだり、PlaggerのNotifyプラグインを作るなりmobircのプラグイン書いてircログを表示させる事なんかが、とても簡単に出来て、とってもお得です!
まずは需要が、どの程度あるのかを知りたいと思いますので、ブクマなりコメントなりで反応していただけると助かります。

なにわともあれ、しあわせさ〜ちをどうぞご利用ください。

2007年11月24日

かゆ・・・うま

IMG_3177.JPG

タイ国沖縄県南上市玉城字前川1336 沖縄ワールド玉泉洞

IMGP9952.JPG

2007年11月25日

やっと…

20071124.jpg
おきなわを体感

沖縄にて入隊

IMG_1444.jpg


即除隊。

コスプレしたかっただけw

(`∀´)ゝ

2007年11月26日

バンコクで食いまくり

バンコクでいろいろ食いまくってきました。

で、皆はこんな感じでウォーッっと食べてます。

とまぁ、私以外の人の充実した写真は取れたんですけど・・・

にこやかに食事をしている自身の姿が一枚もないんですよね。
20071123101913.jpg
顔映ってるの、これだけ。
ニヤニヤしてるだけまだマシか・・・。

2007年11月28日

首里城のおじいちゃん

首里城の階段を必死で登ったおじいちゃん。

20071123125629.jpg

なんかはげまされた。

2007年11月29日

英語禁止DAY

日本語禁止DAYを設ける会社が多々あるけど、逆に英語禁止DAYを設けてはどうだろうか!!
と言う事で、1日だけ12時〜18時まで英語禁止タイムが実施される事になりました。

【ルール】
・固有名詞を含む一切の英語禁止。
・英語を発した場合、5秒以内に他の人からツッコミがなかったらOK。
・英語を話した者は都度、100円を寄付する。
・たまったお金でワタミ行こう。

仕事にあまり影響がない様だったら月1ぐらいでやろうかなーって思ってます。

About 2007年11月

2007年11月にブログ「新宿御苑前ではたらく社員のぶろぐ」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2007年10月です。

次のアーカイブは2008年04月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.34