VFSとファイルシステムの基礎技術 連載:Linuxファイルシステム技術解説(1) ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する
Apacheをチューニングすることにより、Webサイトのパフォーマンスをより向上させることができる。しかし、その前に何をチューニングすべきなのかを見極める必要がある。 この連載もいよいよ大詰めとなった。長く続けている間にApache 2.0のリリースまで迎えてしまったが、筆者が思い付く限りのことを紹介してきたつもりだ。 最後に残したテーマは、「パフォーマンス・チューニング」である。より少ない資源でより高速なレスポンスを確保するために、パフォーマンス・チューニングは欠かせない。これは、あらゆるソフトウェアに当てはまる。設定が一通りできるようになればApacheを問題なく動作させることが可能だが、それをより効率よく動作させられなくては不十分だ。 本サイトの読者であればよくご存じのことと思うが、パフォーマンスのチューニングは非常に奥深いものである。語り尽くすことなどできないが、皆さんの一助となれ
Apacheのログは情報の宝庫だ。サイトの不具合や不審なアクセスを見つけたり、閲覧者の移動経路などからサイトを使いやすくする手掛かりを得ることができる。そのためには、ログの見方やカスタマイズ方法を知る必要がある。 アクセスログ 通常、「ログ」といえばこのアクセスログを意味する。アクセスログは、Webブラウザがサーバ(Apache)に何かをリクエストし、それにApacheが応えるごとに記録される。簡単にいえば、だれかが何かにアクセスするたびに、その結果が記録されるのだ。 詳しくは後述するが、このログに「何を記録するのか」「どのファイルに記録するのか」といったことは、管理者が自由に定義できる。細かな設定を可能としていることは、ログを活用しようと思う管理者にとって大きなメリットである。 エラーログ エラーログは、リクエストの結果がエラーになったものだけが記録される。また、アクセスログと違い、エラ
Apacheについて知ろう 連載:ApacheによるWebサーバ構築(1) 「Apache」でWebサーバを構築。今回は、「なぜApacheなのか?」を改めて確認するとともにApacheの概要を解説する
独自ドメインが使えるホスティングサービスは、どのように実現しているのだろうか? その鍵となるのが「バーチャルホスト」である。この機能を使うことによって、1台のマシンで複数のWebサイトを運用できるようになる。 バーチャルホストとは 今回は、Apacheの特徴的な機能の1つである「バーチャルホスト」について解説する。この機能により、少ないリソースで複数のWebサイトを構築することが可能になる。 なぜバーチャルホストが必要なのか 通常、Webサーバへのアクセスにはwww.atmarkit.co.jpやwww.tis.co.jpといったURLが利用される。URLの「atmarkit.co.jp」や「tis.co.jp」の部分はドメイン名、「www」の部分はホスト名と呼ばれる。第2回でも説明したとおり、実際にはURLをIPアドレスに置き換えなくてはWebサーバにアクセスできない。そこで、先方ドメイ
■ドキュメントキャッシュ機能の見直し メモリキャッシュやディスクキャッシュなど、HTTPコンテンツの動的キャッシュ機能が強化されました。開発バージョン時よりも安定性が向上し、Apache 2.2では実用的なレベルになっています。キャッシュ機能を用いることで、一般的にHTTPサービスの応答性を向上させることができます。 また、Apacheをリバースプロキシサーバとして利用する場合もキャッシュ機能を利用可能です。 ■プロキシ機能によるロードバランシングの実現 プロキシでロードバランス機能を実現するmod_proxy_balancerモジュールが追加されました。HTTPやFTPサービスはもちろん、Apache Tomcatなどのサーブレットコンテナとの通信で使われるAJP13プロトコルのロードバランス機能も提供します。 バランシングの制御は、「リクエスト回数」と「トラフィック量」の2つのアルゴリ
サーバのマシン性能は十分でも、コンテンツの転送時間がボトルネックとなってパフォーマンスが出ない場合がある。このようなときの対処法として、コンテンツの圧縮転送がある。(編集部) 前回に引き続き、Apacheのパフォーマンスチューニングについて解説します。今回はナローバンドで効果を上げる、コンテンツ圧縮機能を取り上げます。 回線のボトルネック解消 ブロードバンドが広く普及したとはいえ、携帯インフラなど依然ナローバンドが主流の分野もあります。そして、Webサーバ自身のパフォーマンスよりも、回線のボトルネックがレスポンスに大きく影響を及ぼすことがあります。例えば、ダイヤルアップで多くのユーザーがApacheに接続した場合、1つの接続が占有するCPU時間が長くなるため、同時接続数が増大する傾向にあります。 このような場合は、限られた回線帯域を有効に利用するために、送信データの圧縮転送で状況の改善を図
最近一部で盛り上がっている「末尾再帰」について自分の理解を確認するのも兼ねて書いてみます。 (そもそも自分がふったのがきっかけっぽいので)。 上級者の方は間違い等に厳しくつっこんでもらえると助かります:-) 背景 自分が末尾再帰を知ったのは多分Schemeの勉強を始めた頃だったと思います。 例えばSICPという本では20ページあたりにこっそりと出てきます。 そのころの理解はかなり浅いもので「ふーん。」程度でした。 さて後日Schemeの処理系を実装することになりR5RSというSchemeの仕様書を読んだところ Scheme の実装は真正に末尾再帰的(properly tail-recursive) であることが要求されている。これは,たとえ繰返し計算が 構文的に再帰的手続きで記述されているときでも,定数空間 でその繰返し計算を実行することを可能にする とあり末尾再帰のことを詳しく知る必要性
テストの環境としては、ローカルマシンにてWeb/APサーバ(Tomcat)を起動してテスト対象アプリケーションをデプロイしています。テスト対象のアプリケーションとして、プレゼンテーション層にStruts(1.2.7)を用いて作成されたJavaEE/Webアプリケーションを使用しました。テストケースの書き方 Tips集(1/2) ここではテストケースの書き方のヒントや便利なコマンドの使い方などを紹介します。openコマンドのURL指定 Seleniumでは、URLを指定して、html(JSP)を開いたり、サーブレットを起動したりできます。URLは絶対パス、相対パスのいずれも指定可能です。しかし、絶対パス指定だと、アプリを起動するマシン(IP)が限られてしまいます。 例えば、「http://localhost:8080/~」と指定した場合、自分のローカルマシンでしかテストを実行できません。17
第5日目:要らないエクステンションに別れを告げろ――userChrome.js実践編:Firefoxを鍛え直せ! フォクすけブートキャンプ フォクすけを完全にあなたの支配下に置くための究極のワークアウト、フォクすけブートキャンプへようこそ。第5日目は脂肪と化したエクステンションをuserChrome.jsを使って代替してみよう。 フォクすけブートキャンプへようこそ。これまでの4日間あきらめずについてきた君は、Firefoxの隠れた機能が躍動したがっていることに気がつき始めたことだろう。 4日目でuserChrome.jsが登場したことで、「もうあなたにはついて行けないわ……」とブラウザを閉じた君、恥じることはない。そもそもカスタマイズは決して楽ではない。ポイントは捨て身になること。そうすればきっとやり遂げられる。それが最初の一歩だ。これを読んでいるのなら戻ってきたということだろう。ゆっくり
FEBEにはインストールする価値が十分にある。FEBEを使えば、Firefoxが保存しているすべてのもの+αをバックアップおよびリストア可能となる。自動バックアップをセットしておいて複数の時刻のバックアップを保存するのも朝飯前だ。 Firefoxブラウザは、ユーザーのブックマーク、閲覧履歴、フォームの入力履歴、ユーザー名/パスワードなどを保存しているだけでなく、さまざまな拡張やテーマも保存していることが多い。そのため別のPCを使用したり、いろいろなディストリビューションを使ってみたりしているときには、ブラウザの環境を再現するのが複雑だったり時間がかかったりすることがある。しかしFEBE(Firefox Environment Backup Extension)を使えば、Firefoxが保存しているすべてのもの+αをバックアップおよびリストア可能となる。 FEBEを使えば、ブックマーク、設定
それではテストケースを作成していきます。まず基本となるHTMLでの記述方法です。HTMLでテストケースを記述する場合、以下のファイルを使用します。 テストケース 実行される1つのテスト。実際にWebブラウザを操作したり検証したりする内容を記述する。試験項目の小項目(1項目)に相当する。HTMLファイル。 TestSuite(テストスイート) テストケースをまとめたもので、HTMLでテストケースを記述する場合のテスト実行単位となる。試験項目の中項目に相当。HTMLファイル Index TestSuiteをまとめた目次相当のもの。TestSuite毎にテストを起動するために使用するHTMLファイル。必須ではないがあった方が便利
今回から、Seleniumを使ってどのようにテストを行っていくか実践していきます。サンプルアプリケーションを用意し、それに対するテストをSeleniumで実施します。まずは事前準備とSeleniumの基礎知識についての説明です。これより本連載では、下記ソフトウェアを使用しているという前提で進めていきます。 カテゴリ ソフトウェア バージョン
Asyncronous I/O ソース。 AsyncIOについて(その1) AsyncIOについて(その2) またあちこちのBlogを見る限りNonBlockingI/OやNonBlockingI/O+シグナルとAIOが混同されている気がしたので,それら整理してみたい. 大体以下のような理解でいいのでしょうかね。もしかしたらきっちりした定義が有るのかもしれませんが。 (1) Blocking I/O 普通にopen or socketで作成したfdでwrite, read等を呼んだ場合に発生するI/O。system callが終了したら読み込み or 書き込みが終了する。 (2) Nonblocking I/O 上記のfdにfcntlでO_NONBLOCKオプションを指定してから、write, read等を呼んだ場合に発生するI/O。読み込み or 書き込み可能判定はerrno == E
AsyncIOについて(その1)の続き. NONBlockでIO処理をする方法としてselectとシグナルを使う方法があるというのが前回の話だったが, selectはselectよりkqueue,epollで述べたとおり, ビジーループがかかるためあまり効率はよくなく,シグナル方式は制約があるためあまり使い勝手がよくない. というわけで新しく出てきたのがPOSIX Asynchronous I/O(AIO)という機構だ. これはIOのwaitをイベントドリブン形式にしてビジーループをなくそうというものだ. プログラムの流れとしては下記のようになる. 1. 対象となるファイルディスクリプタにシグナルハンドラもしくはイベントハンドラを登録しておく 2. aio_read/aio_writeを呼び出すと制御はすぐにユーザに戻る. 3.対象のファイルディスクリプタの処理が終わると登録されていたハン
最近のOSにはAsyncIO(AIO)という新しいI/Oの仕組みが導入されているようだ.lighttpdの次期バージョンではAIOを導入することで8割もパフォーマンスが上がったようで非常に興味深い. またあちこちのBlogを見る限りNonBlockingI/OやNonBlockingI/O+シグナルとAIOが混同されている気がしたので,それら整理してみたい. はじめに I/O処理であるシステムコールのread/writeは対象がディスクだったり,ソケットだったりデバイスだったりするわけだが,通常これらのIO処理はCPU処理やメモリ処理に比べ非常に遅いことが知られている. 通常readが行われるとreadが終わるまで,永遠に処理は戻ってこず,プロセス的には待ち状態になってしまう.これは「Blocking」と呼ばれる. 遅いディスクやデータがいつ来るかわからないソケットなどに対するIO処理では
Programming with POSIX threads 9月前半のテストが終了しました。まだ後半の方にも有るので、まだやっていない夏休みの課題をさささっと片付けてしまう事にしよう。それにしてもH木先生はいつテスト日程を決めてくれるのか(笑) 最近はpthreadを用いたthread pooling式のマルチスレッドサーバーアプリケーションと毎日のように格闘しています。pthreadを使うにあたり良い本は無いものかとある人に紹介して頂いたのがProgramming with POSIX threadsです。 Programming With Posix Threads (Addison-Wesley Professional Computing Series) David R. Butenhof Addison-Wesley Pub (Sd) 1997-05-06 ¥ 8,528 この
libaio(Linuxの非同期I/Oライブラリ)の使い方 2007-06-05 (Tue) 4:53 Unix Linuxで非同期I/Oを行うためのライブラリ「libaio」の使い方を書いてみる事にする。少し昔の話になるが、lighttpdが使用し、スループットを80%も上げたらしい。 TOEFLに向けて転置ファイルについての論文(Inverted files for text search engine [moffat 06])でReading対策をしていたところ、意外とスニペット(検索にヒットした箇所の前後の文章)を作るところが時間がかかるという事を教えてもらったので、適当にそれを例題にしてみる。具体的には以下のようなコードを非同期I/Oを使用して速くなるかどうか見てみる。 for (unsigned int i = 0; i < files.size(); i++) { FILE*
この連載は、WebアプリケーションのテストツールであるSelenium(セレニウム)についてサンプルを用いながら概要と基本的な使い方を解説していきます。本連載第1回の今回は、Seleniumの概要について紹介します。 Seleniumとは、Webブラウザを使ってWebアプリケーションをテストするツールです。この「Webブラウザを使って」というのが非常に大きなポイントで、人が手でWebブラウザを操作する代わりにSeleniumがWebブラウザを操作してくれるのです。 そして単純に操作するだけでなく、例えばエラーメッセージが正しく表示されているかといった検証も行うことができます。つまり、今まで人手を必要としていたWebブラウザを使った試験が自動化できるものなのです。そのため数百項目もあるテストも、クリック1回で実施できます。 より重要なことは「自動化することによって試験を繰返し実施できる」こと
Apollo改めAIRプログラミング入門(2) AIRとSQLiteで学ぶ ローカルDB操作の基本 クラスメソッド 杉浦篤史 2007/8/17 編集部注:前回より、連載「Apolloプログラミング入門」は本連載「Apollo改めAIRプログラミング入門」にリニューアルしました。この連載をより深く理解するためには、連載「Apolloプログラミング入門」も併せてご覧ください。 いまさら聞けない、SQLiteとは? 前回はAIR(Adobe Integrated Runtime)ベータ版の新機能として、ドラッグ&ドロップに注目して2つのサンプルを作成しました。 今回はAIRベータ版から利用できるようになったローカルDBとの連携についてです。AIRには、DBエンジンとしてSQLiteが実装され、ActionScriptからSQLite形式のDBファイルを扱えるようになりました。 SQLiteはM
今日はとてもショッキングな出来事がありました。あまりにショックがでかいので何かに没頭しなければ気が紛れそうにありません。と言うわけで全く専門分野でもないし当面使う予定もないのですが、1年ほど前にちょっと気になっていた画像の類似検索についていろいろ調べてみました。 どうやら ImgSeek ってソフトが結構有名らしいです。最新バージョンは 0.86 で Linux Only です。1つ前のバージョン 0.85 は Windows binary があります。 過去にいくつか画像類似検索ソフトを試したような記憶がありますが忘れてしまいました(vector でも結構類似検索ソフトありますね)。まずは windows binary 版をダウンロードしてきて実行してみました。 それなりに使えそうな予感がします。Linux 向けの imgSeek-0.8.6.tar.bz2 をダウンロードしてインストー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く