Ubuntu 10.04 LTS 64bit版インストール

Ubuntu の新バージョンがでるたびに、半年って早いなぁって思っちゃうわけですが(笑)、Ubuntu 10.04 LTS がリリースされました!。

日本語 Remix もゴールデンウィーク中にリリースされるということですが、とりあえず本家版をインストールしました。 今回は x86 をやめて amd64、つまり 64bit 版でクリーンインストールです。

無事、動作したの図。 🙂

Screenshot20100501

最近は Windows も 64bit 化が少しずつ進んできていますが、64bit に関しては Linux デストリビューションを使った方が環境が整うイメージがあります。

なぜかというと、カーネル・ドライバ・アプリケーションがオープンソースで固められていますので、64bit 対応版のリリースを待つ必要がなく、要は自分で 64bit コンパイルしちゃえば 64bit ネイティブアプリができあがるからです。 もちろん、Ubuntu 64bit 版をいれればパッケージはすべて amd64 コンパイル済み。

あと、x86 だとカーネルとかは i686 ネイティブになっているのですが、他のパッケージは i386 なのでちょっと損した気分。

高速化するために X とかを自分で i686 コンパイルするなどできますが、これには相当時間がかかりますので、 amd64 版はそういった CPU 最適化バイナリを用意するという意味でも楽ではないかと思います。

ちなみに名称が “AMD”64 ですがもちろん Intel の CPU でも動作します。 AMD64 は Intel でいうところの Intel64 で AMD64 と互換性を持っています。(IA-64 がぽしゃったので)

AMD64 – Wikipedia

AMD64は、インテルの開発したx86アーキテクチャをアドバンスト・マイクロ・デバイセズ (AMD)が拡張して64ビット化した命令セットである。AMDのOpteronAthlon 64Turion 64など最初に実装されたK8マイクロアーキテクチャとその後継製品に実装されている。後に、インテルはAMD64と完全互換性を持つ命令セットをIntel 64の名称で採用した。

さて、64bit 版で問題になるのがオープンソースじゃないアプリ達。 具体的に言えば、 Adobe Flash、NVIDIA ドライバ、ATOK などです。

NVIDIA ドライバについては、以前から 64bit 版が用意されています。 ただし、10.04 から Web 配布版のインストーラは使えないそうです。

LucidLynx-ReleaseNotes-ja – Ubuntu Wiki

nVidiaのベンダ純正ドライバインストーラとは互換性がありません

Ubuntu 10.04 LTSには、改善され統合されたnVidiaバイナリドライバパッケージが含まれています。不幸なことに、これはnVidiaウェブサイトでupstreamに提供されているインストーラとの互換性を犠牲にして成り立っています。 10.04 LTSでnVidiaバイナリビデオドライバを利用したいユーザは、Ubuntuパッケージを利用してインストールする必要があります。システム→システム管理→ハードウェア・ドライバからセットアップしてください。

ハードウェアドライバから current バージョンがインストールできるメニューがありますのでここからいけます。 バージョンは 195.36.15 なので配布版より一寸古いです。 動作確認とれ次第、current がくるのかな。 ぼくはベータドライバも果敢に入れる方だったのですが、できなくなったのはちょっと残念(笑)

Adobe Flash については、Adobe から32bit バイナリしか正式版がありませんが、flashplugin-install パッケージをいれることで 64bit 版 Firefox 上で動作します。 これは nspluginwrapper の働きによるもので、32bit プラグインを 64bit 版のブラウザにうめこむような動作をしているのだと思います。

Windows だとこういうのないので、64bit IE がいまいち使えないという問題がありますが、Ubuntu では解決できます。 たしか Mac の Safari も同様の動きができような気がしました。(記憶です)

最後、ATOK X3 Linux ですがこれは以下のサイトさんを参考に 10.04 でもインストールすることができました。(ちょっとその後のアップデートでファイル名が違うところがあるので要注意です)

Tipset » ATOK X3 for LinuxをUbuntu 9.04 (Jaunty Jackalope) x86_64版にインストール

インストールの流れはサポートページ「Ubuntu 8.04 LTSでのインストール方法」で紹介されている方法と同じだが,Debian系ディストリビューションの64bit版向けdebパッケージがないため,手順8と9を手動で行う必要がある

/usr/lib32/gtk-2.0/immodules/ ディレクトリは手で作成するのだと思うのですが、実はここまでの手順で全角/半角でパレットが起動することができませんでした。

うーんと思って、/etc/gtk-2.0/gtk.immodules の最上位行に ModulesPath というのがコメントアウトされているのを見つけたので、これをコメントインして、/usr/lib32/gtk-2.0/immodules を追加したところ起動できるようになりました。

ただし、アプリケーション起動時に、GTK から parsing context info とワーニングがでてきます。 記述をいれるとパレットでてくるので、ちょっとよく分かりません。 あと、Songbird では export GTK_IM_MODULE=ibus とかしないと(iiimf)だと起動後フリーズしてしまうようです。 これも謎ですが、とりあえずなんとか。(GTK をスタティックリンクしているから?)

てなわけで、Ubuntu 10.04 ですがさすが LTS だけあってよくできています。 🙂 高速起動はうちでは nvidia ドライバがエラーを起こして、高速にならないパターンがでているようですが、まぁそのうち直るでしょう(笑)

さて、機能的な話。

10.04 からメッセンジャー、メール、twitter などの通知系のアプリが統合操作できるようになりました。 これが結構便利です。 我らがとりさん、Pidgin もデフォルトインストールからは外されているものの、インストールすることで統合の仲間入りできます。

Gwibber01

ブロードキャストとかかれているのが、twitter 系のサービスを統合するクライアント Gwibber からのメッセージです。 まだフォント設定とかできないみたいですが、通知もでたりしてなかなかよさげです。

フォントと言えば、xft の True Type レンダラ何か変わったかなぁ。 ちょっと描き方が変わった感じがします。 ヒンティングの使い方がへたになったような。 気のせい?(笑)

時期 Ubuntu は 10月の 10.10。 こっちは GNOME 3.0 が入るそうで、UI がドラスティックに変わりますので、LTS のタイミングがいい。 2系の GNOME 使い続けたければ 10.04 でいけるわけです。

ここ1ヶ月くらいはアップデートが続くと思いますが、さすがに 04 系あけあってきっちり動いている印象です。 9.10 のかたはレッツアップグレード。(だいぶ ja.ubuntu の混雑も解消されてきたようですっ)

Atom でローカルサーバ更改(2)

先日入れました、Atom のローカルサーバですがうまいこと安定運転が開始できたようです。 🙂

CentOS を 5.3 から 5.4 にしたので、同じ .conf が使えなかったりして若干手間取りましたが思ったよりスムーズに移行できました。

このローカルサーバの機能は、samba(ファイル共有) + fetchmail(POP取得) + maildrop(メール振り分け) + dovecot(IMAP) + cups(プリンタサーバ)が基本的な部分です。

その他時期によって DNLA が動いていたりマイブームによっていろいろ(笑)

IMG_0087

ハード面、CPU/メモリ以外に前のサーバから機能的に変わったのは、

  • NIC がギガビットになった。
  • Waik Up LAN が使えるようになった。
  • USB がまともにうごくようになった。(前のマザーは CentOS 5.3 で調子悪かった)

などなど。

遠隔起動ができるようになったのは、狭い部屋ですがうれしいところです。 ハブいれかえれば、この部屋の機械はこれで全部 G/b 対応になったので高速通信できそうです。 USB は、、後のお楽しみ。 🙂

今回の移行の目玉は、 以前使っていた IDE 300G RAID 1 をそのまま保ったまま新サーバに接続すること。 そして、1T の新 RAID 1 にデータ移行します。

こんな事もあろうかと Linux のソフトウェア RAID 1 を使っていましたので、基本は接続すれば md として認識されます。(CPU のバウンダリが違うと認識しないというのもどこかでみましたが、今回は x86 同士なので問題なしでした)

今回ちょっと問題になったのが、システムインストール時に先に 1T 新 RAID 1 を md0 として構成していたことで、そのまま旧 RAID 1 を IDE に接続すると md0 が競合して認識できませんでした。

この場合は次のコマンドで md1 など別番号を指定して構成すると良いようです。(これでうちはうまくいきましたが、勘でやったことなのでまねする場合はよく調べてください)

$ sudo mdadm /dev/md1 --assemble /dev/hde1 /dev/hdf1
$ sudo mount /dev/md1 /mnt/ide/
$ cat /proc/mdstat
Personalities : [raid1] 
md1 : active raid1 hde1[0] hdf1[1]
      199141632 blocks [2/2] [UU]
      
md0 : active raid1 sdb1[1] sda1[0]
      976759936 blocks [2/2] [UU]
      [=========>...........] 
resync = 48.5% (473870976/976759936) finish=91.6min speed=91402K/sec

ちなみに md0 は構成中の図。

マウントできちゃえば、あとは cp –Rfp とかで旧 RAID から新 RAID にデータをコピーすればおしまい。 バックアップもかねて旧 RAID は電源抜いておきました。 🙂

あとは勝手知ったる CentOS、 5.4 になってパッケージも新しくなって良いです(といっても古いですが、、もうすぐ 5.5 でるのかな)

maildrop だけ rpm がなかったのでソースから rpmbuild して入れています。

[hiromasa@localhost ~]$ cat .rpmmacros 
%_topdir /home/hiromasa/rpm
[hiromasa@localhost ~]$ ls -laF rpm/
合計 28
drwxrwxr-x  7 hiromasa hiromasa 4096  4月 26 00:27 ./
drwx------ 13 hiromasa hiromasa 4096  4月 29 17:12 ../
drwxrwxr-x  3 hiromasa hiromasa 4096  4月 26 00:29 BUILD/
drwxrwxr-x  3 hiromasa hiromasa 4096  4月 26 00:27 RPMS/
drwxrwxr-x  2 hiromasa hiromasa 4096  4月 26 00:27 SOURCES/
drwxrwxr-x  2 hiromasa hiromasa 4096  4月 28 02:00 SPECS/
drwxrwxr-x  2 hiromasa hiromasa 4096  4月 26 00:33 SRPMS/
[hiromasa@localhost ~]$ rpmbuild -ta maildrop-2.4.3.tar.bz2 

こんな感じで、 .rpmmacros つくって、作業ディレクトリ指定しておくとホームディレクトリでソースから rpm つくれて便利です。

というわけで、最後に何年も動いてくれた Athron XP ダウンクロック 1G + 512M メモリ & マザー & GeForce T4200。 あと内蔵 NIC チップが焼けたので登板した PCI NIC くん。

IMG_0086

長い間ありがとう。 お疲れ様でした。

ぼくの宝物ボックスでゆっくりお休みください。 🙂

Apache JMeter で Web サーバのチューニング

最近、VPS が現実的な値段になってきまして root ありのサーバで LAMP 構築して WordPress なんてこともちょっとがんばればできるようになってきました。

そこで、はてさて安価な VPS どれくらいの性能が出るのかってことでまずはローカルの仮想環境で同じスペックのサーバをたてて試験して、、、みたいなんてときに使えるかなと思い、Web の負荷やシナリオ試験アプリケーション Apache JMeter の使い方とか書いてみたいと思います。

ここでかかれていることはローカル環境向けです。 他の方も使っているインターネットサーバに向けては決して負荷試験は行わないでください。

というわけで、とりあえず Apache JMeter。 pure Java のアプリです。 swing ベースなのでちょっと使いづらいですが、Java が動く環境なら動作すると思います。 ぼくは Linux と Windows で試しています。

JMeter – Wikipedia

Apache JMeter(アパッチ ジェイメーター)は、Jakarta Projectにおいて開発されたソフトウェアで、クライアント・サーバシステムのパフォーマンス測定および負荷テストを行うJavaアプリケーションである。

オープンソースかつ多数の機能を備えていることなどから、WebアプリケーションおよびWebサーバの性能測定に広く利用されている。

JMeter – Apache JMeter

Apache JMeter is open source software, a 100% pure Java desktop application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.

JMeter を起動したらシナリオを作成していきます。

ここでは、WordPress サイトに対して秒間 50 人くらいのアクセス集中を想定してみます。 とりあえず右ペインを以下のように。

jmeter01

名称はデフォルトのままにしていますので、「テスト計画」の右クリックからアイテムを探して追加していきます。 上からいきます。

CSV Data Set Config。

jmeter02

これは任意の csv ファイルから動的な項目を読み取る場合に使います。 子要素にループがあると上から値が読み込まれていきます。 なくなると上に戻るようです。 ここでは wp.csv としていますがこれは以下のようにアクセスするパスを指定しています。 path という名前をつけているのに注目しておきます。

wp.csv

gallery
about
archives/1134
archives/1124

次は、 HTTP ヘッダマネージャ。

jmeter03

ブラウザを疑似るために、それっぽいヘッダをつけておきます。 まぁ全部なくてもいいと思いますが、Web サーバがブラウザだと思ってくれるようにしておきます。

HTTP リクエスト初期値。

jmeter04

この後にでてくる HTTP リクエストの初期値を設定しておきます。 これを設定した後はリクエストの設定済みの欄を空で、この値が使われます。 ぼくらはローカルと結合環境、統合環境などと工程によって試験環境を分けることが多いのですが、そういうときに振り先をすぐ変更できるので便利です。

ここからが本題、スレッドグループ。

jmeter05

スレッドグループに所属する子要素が同時に実行されます。 スレッド数が同時に上がる数で Ramp-Up 期間がそれをどれくらいの時間で実現するかとなります。 この場合は、1秒に 50 アクセスを擬似的に再現です。 そしてループ回数で何回やるかを決定します。

ちなみに、これよりかなり複雑なシナリオで 200 スレッドあげたら、クライアントのほうがへばりました。 ほどほどに(笑)

スレッドグループの子要素1。 クッキーマネージャ。

jmeter06

これをいれておくと cookie を食べてくれます。 まぁここではなくても動くですが、帯域なども測定したいときは入れておいた方がいいかもしれません。 また、認証があるときはこれをいれておくだけで、cookie 食べて次の HTTP リクエストで発行してくれます。

スレッドグループの子要素2。 実際にブラウザの代わりにアクセスしてくれるのが、HTTP アクセスです。

jmeter07

パスのところに注目で ${path} が入っています。 これが上ででてきた csv 項目を差し込んでいるところです。

あと、スクリーンショットきれてしまったのですが下にある「すべてのイメージとアプレットを繰り返しダウンロードする」にチェックをいれると、通常のブラウザと同様にイメタグとかのアクセスもしてくれます。

結果を表で、ツリーで表示は、いれておくと実行後の結果を格納してくれます。

では、

[tegaki]とりゃ、実行![/tegaki]

ここでは、仮想環境使わずにローカル->ローカルで自爆するようにしています。 なので、実行中に GUI のシステムモニタをみてみます。

jmeter10

うひょ~。 4コアの CPU 使っていますがいっぱいまであがっています。 メモリは平気そうですね。 普通は vmstat 1 とかのコマンドでみるといいかもです。

ちなみに、サーバサイドが Java/Tomcat の場合は JMeter からマネージャアプリの manager/status/xml にアクセスすることで Java のヒープとかグラフ化できる機能があります。 (トム5 とドキュメントにありましたが 6 でもいけました)

スレッドがすべて完了したら結果系をみてみます。

jmeter09

ツリーの方で、取得した HTML などがみれます。 シナリオがうまく動いていないときはこれをみるといいかもです。

表で表示では、http ステータスやアクセス時間や転送量などがみれます。

jmeter08

オールグリーンであることを見ながら、あや、10秒かかっちゃった人いるね、、みたいな。 HTTP のステータスコードがエラー系だと赤になりますので確認します。 🙂

一度シナリオができれば、Apache や MySQL のチューニングをしてアクセススピードの平均値をみたりできると思います。 ローカル、ローカルでやる場合はクライアント側でも負荷がかかりますのでできれば別マシンでやるほうがいいでしょう、

さて、こんなのつくっていくとコメントポストしてみたいなぁとか、管理画面を複数人で使ったらなどなどでてくるかと思います。(ないか(笑))

ここでは GET ばかりでしたが、JMeter は POST したり GET でもらってきた HTML を後処理、正規表現で hidden 値を変数にもらって次のリクエストで POST したりもできます。

ちょっと正規表現かくの大変ですが、wp_nonce とかもらってみたいな感じですね。 また、結果の HTML が正しい出力かどうかなどのアサートもすることができます。

というわけで、ぼくも 512M の VPS ぽい仮想環境をローカルにつくってやってみましょうか。 ちなみに、250M 付近の VPS で Apache + PHP はきついですねぇ。 動きますがちょっと負荷かけるとメモリ不足で Apache が飛んだ経験があります。 メモリ重要。:)