Lenovoのx201にUbuntu 10.04 LTS 64bitを入れたメモ
11月 29, 2011 by irako · Leave a Comment
lenovoのx201にfedora入れて仕事してたんですが、どうもモッサリしているので、ubuntuにしてみました。
そのメモです。
1. USBメモリからBOOT F12でブートデバイス選択
2. OSのインストール自体は、次へ次へみたいな感じで、得に悩むこともなく30分程度で終了
3. firefox8.0.1を入れる
# cd /tmp
# wget ‘ftp://63.245.208.138/pub/mozilla.org/firefox/releases/8.0.1/linux-i686/en-US/firefox-8.0.1.tar.bz2′
# tar jxvf firefox-8.0.1.tar.bz2
# mv firefox /usr/lib64/firefox8.0.1
# cd /usr/bin
# rm -f firefox
# ln -s /usr/lib64/firefox8.0.1 firefox
4. syncしてブクマ等復活
5. skypeを入れる 公式にubuntu10.4(64bit)用のdebファイルがあるので一発
6. 無線のドライバを入れる
# cd /tmp
# wget ‘http://intellinuxwireless.org/iwlwifi/downloads/iwlwifi-6050-ucode-41.28.5.1.tgz’
# tar zxvf iwlwifi-6050-ucode-41.28.5.1.tgz
# mv iwlwifi-6050-ucode-41.28.5.1/iwlwifi-6050-5.ucode /lib/firmware/
# shutdown -r now
7. mozcを入れる
# add-apt-repository ppa:japanese-testers/mozc
# apt-get update
# apt-get install ibus-mozciBusをリスタート
「iBusの設定」→「インプットメソッド」→「インプットメソッドの選択」→「日本語」でMozcを選択
Mozcを一番上に
ブックマークはsyncできるし、メールはGmailなので楽ですね。
YAPC::Asia Tokyo 2011
10月 18, 2011 by irako · Leave a Comment
YAPC::Asiaに行ってきたので簡単にレポートします。
▽ さきにまとめ
Perlの祭典と行っても、Perlについてのセッションは多くありません。
Perlを使ったシステム、というか、Web系技術全般といった感じです。
Web技術を引っ張ってきたPerl界らしい祭典ですね。
各セッションについては、勿論内容自体が勉強になることも多かったですが
それよりも、沢山刺激を受けたことが自分にとって良かった所だと思います。
▽ 14(Fri) 一日目
Perl 5.16 and beyond. (Jesse Vincent)
Perl5のこれまでの反省と今後の対応の話。
Webアプリケーション高速化
高速化についての様々な手法。
特に印象に残ったのは、先回りしてキャッシュを生成しておくという仕組み。
SmartPhone development guide with Node/CoffeeScript and….
これからはNode。viewをjavascriptで書いてるのだから、サーバサイドも同じので書きたくなるよね。というお話。
Perlで構築された中規模サイトのDC引っ越し記録
今回優勝したセッション
内容は無停止でシステムを論理移転したお話。
特に勉強になったのは、静的ファイルのフォールバックの仕組みについて。
Mobageオープンプラットフォームの事件簿
モバゲーのTextDataAPI(とてもリクエストが多い)のトラブル対応について。
レプリケーションが追いつかないほどのDELETE&INSERTには正直驚きました。
Mobageソーシャルゲームにおける大規模サーバ運用
mobage のインフラ側の話と、DevOpsの話。
LT
各自5分でいろんな発表。
基本的にネタだけど、Perl文化のようなものを感じられる楽しい時間。
Perl歴一週間のsixapart広報の女の子の発表が、とても面白かった。
▽ 15(Sat) 二日目
大規模環境における、マニアックなキャッシュ利用
memcachedは結構取得に失敗するので、ちゃんとリトライしましょうという話。
ぼくがかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく
最強のフレームワークとは、実装のない設計思想ですねという話。
画像Hacks
画像のパターン認識の話。
Perlで無理ゲーム攻略
同じく画像のパターン認識の話。
闇のEメール伝説
SMTPってちっともSimpleじゃないよねという話
Perlスクリプトをqdbでデバッグ
qdbでデバッグする話
Hello Embed Perl!
組み込みPerlの話。
Managing A band Of Hackers
エンジニアのマネージメントの話。
nginxアドオンモジュール開発 (前置き)
9月 27, 2011 by irako · Leave a Comment
nginxのアドオンモジュール開発についてご紹介したいと思います。
nginxモジュールを開発する理由
「Apache moduleではなくnginx moduleである理由」
ということではなく
「LLではなくCで書く理由」
という話になりますが、
1. 非常に高速である
全く同じ挙動をするアプリケーションを作ったわけではないのですが、近い作りのもので比較した推測では、LLの中でも速い部類(だと私は思っている)のPerl + Apache + mod_perlで動作させた場合の10倍程度の処理能力差があると考えています。
2. 省メモリである
mod_perlやlibphpを利用したApacheの場合、アプリケーションが小さいものであっても、数十MB/プロセスになるのに対し、開発したモジュールを組み込んだnginxの場合、1MB~2MB程度と、非常に省メモリです。
また、1プロセスが処理出来るリクエスト数/secが多いため、プロセスを多く起動する必要もあまりなく、総量でもメモリ消費は少なくなります。
∴ サーバ台数が少なくて済むため、ランニングコストが大幅に減ります。
但し、LLの良さを捨ててまで速度追及する必要のある局面は、そう多くはないと思います。
* それほど複雑、巨大でないアプリケーション
* かつ、アクセス数が膨大であるアプリケーション
* かつ、サーバ台数を抑えたい
という条件には最適です。
弊社の場合、広告システムの配信部分に利用しています。
モジュールの作成方法
一例ですが、下記のような配置になっている前提で、
/path/to/src/nginx-1.0.6 # nginx本体のソースがあるディレクトリ
/path/to/src/hello_world # 開発するモジュールのあるディレクトリ
作成するファイルは、以下の二つだけです。
/path/to/src/hello_world/config
/path/to/src/hello_world/ngx_http_hello_world_module.c
configには下記のように記述します。
ngx_addon_name=ngx_http_hello_world_module
HTTP_MODULES=”$HTTP_MODULES ngx_http_hello_world_module”
NGX_ADDON_SRCS=”$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_hello_world_module.c”
アドオンモジュールである、ngx_http_hello_world_module.cについては、次回以降でご紹介します。
広告配信のインフラ
9月 9, 2011 by irako · Leave a Comment
ngi groupでは、いくつかの広告システムを開発/運用しています。
広告配信では毎秒何千〜何万というリクエストを安定して処理する必要があり、インフラにはかなり気を使っています。が、ほとんどの部分は普通です。
以下、弊社の標準的な広告システムのインフラをご紹介します。
LVS(ロードバランサー)
ipvsadm, keepalivedを利用。システムによってはVRRPを用いた冗長化をしています。
NATタイプ、DSRタイプどちらも使用していますが、トラフィックが100Mbpsを大きく下回るのであれば、NATタイプを選択することが多いです。
リバースプロキシ
nginxを利用。構成によっては、アプリケーションサーバと同一ホストで動かす場合もあります。
配信サーバ
nginxのアドオンモジュールをC言語で開発し、高速に処理しています。
memcached等のキャッシュサーバを最大限利用します。
また、キャッシュのキャッシュをローカルにもつことで、更にデータの取得コストを下げています。
サーバのスペックにもよりますが、比較的安価なホスティングサーバで、一台辺り秒間3500〜4000リクエストを捌く能力があります。
アプリケーションサーバ
httpd(mod_perl)でCatalyst
Starman(Plack/PSGI)
など、主にPerlで開発しています。
キャッシュサーバ
memcachedやtokyocabinetを利用
DBサーバ
MySQLで、レプリケーション構成にしてます。
他のサーバよりも高スペックなものを選択しています。

