2011年8月アーカイブ

負荷分散された環境で、SYSLOGなどを使わずにApacheやProxyのログが複数サーバにそのままはかれる設定になっている場合、ログを調査する際に複数の巨大なファイルを扱わなくてはならず面倒ですね。

なんとなく既にあって車輪の再発明をしている気がギュンギュンするのですが、ざっとググったところ見つからなかったので書いてみました。

使い方

$ aplogmerge.rb 1.log 2.log 3.log...

色々なケースにおけるテストとか全然やってないのですが何となく動いてそう。 あ、Ruby1.9.2でしか動作確認してません(汗)

Apacheのログはアクセスされた時間をレスポンスした時に出力するため、それぞれのファイル内で前後している行がある可能性があります。 その場合このプログラムでマージすると純粋に正しい出力にはならないかもしれませんが、概ね目的の出力は得られると思います。

日時を数値に変換してるとこはテキトーです。各行の前後関係が分かればよいだけなので、もっと速くていいロジックがありそう。

Cで書かないと実用に耐えないかな?と思いましたが約1GBのログ3つで実行したところ6分くらいで返ってきたので十分かなと。

profileすると現状、遅いのは比較のため日付を数値に変換している処理と、まだ先読みしてないファイルを特定するためArray#rejectしてるとこ。 気が向いたらもう少しチューニングしたいですが、現状十分な速度なのでもういいかなと(笑)

昨日、mongrelの事を書いたばかりですが、Ruby1.9.2、Rails3じゃmongrel_clusterが全然動かない(>ω<)

みんなどうしてるんだろうなと、ネットを徘徊してみると時代はthinなんですね!

nginx+thin

いや〜、導入も簡単で動きも、varnish+mongrel_clusterより速い気がしますな〜

今読ミもRails3化したらnginx+thinに移行しよう(`・ω・´)

新しい環境にmongrelをインストールしようとして毎回ググってる事に気付き、備忘のため。


ちなみに --pre 付けないと、こんなエラー吐きます。
INFO:  `gem install -y` is now default and will be removed
INFO:  use --ignore-dependencies to install only the gems you list
Building native extensions.  This could take a while...
ERROR:  Error installing mongrel_cluster:
	ERROR: Failed to build gem native extension.

        /Users/iwazawa/opt/ruby-1.9.2-p290/bin/ruby extconf.rb
checking for main() in -lc... yes
creating Makefile

make
gcc -I. -I/Users/iwazawa/opt/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux -I/Users/iwazawa/opt/ruby-1.9.2-p290/include/ruby-1.9.1/ruby/backward -I/Users/iwazawa/opt/ruby-1.9.2-p290/include/ruby-1.9.1 -I.   -fPIC -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long  -o http11.o -c http11.c
http11.c: In function 'http_field':
http11.c:77: error: 'struct RString' has no member named 'ptr'
http11.c:77: error: 'struct RString' has no member named 'len'
http11.c:77: 警告: カンマ演算子の左側の式に効力がありません
http11.c: In function 'header_done':
http11.c:172: error: 'struct RString' has no member named 'ptr'
http11.c:172: error: 'struct RString' has no member named 'ptr'
http11.c:172: error: 'struct RString' has no member named 'ptr'
http11.c:174: error: 'struct RString' has no member named 'ptr'
http11.c:176: error: 'struct RString' has no member named 'ptr'
http11.c:177: error: 'struct RString' has no member named 'len'
http11.c: In function 'HttpParser_execute':
http11.c:298: error: 'struct RString' has no member named 'ptr'
http11.c:299: error: 'struct RString' has no member named 'len'
make: *** [http11.o] エラー 1


Gem files will remain installed in /Users/iwazawa/opt/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/mongrel-1.1.5 for inspection.
Results logged to /Users/iwazawa/opt/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/mongrel-1.1.5/ext/http11/gem_make.out

今まで9年くらいNTT-MEのBA8000 Proというルータを、特に不都合がなかったので使い続けてきました。

その後、無線LANもさすがに必要になったのでPLANEXのBLW-04GMという無線LANルータを、これも8年、特に不都合がなかったので使い続けてきました。

ところが最近、ネットの接続がずいぶん不安定になってしまって、例えば新しいページを表示すると1分くらいつまったり、接続不能になったりし始めてました。

大きなファイルのダウンロードなどは、始まってしまえば、普通に速いのですが、コネクト辺りで不思議なつまり方をするのです。

最初、相手のサーバのせいかなと思って再読込してしのいでたのですが、会社で同じページを見ている分にはそんな事はなく、そろそろネットワーク機器にガタがきたんだなと理解。逆に9年と8年とかよくもったなと。2機種とも素晴らしく長持ちした。

また、東日本大震災がきっかけで自宅で運用していたサーバをさくらVPSに移行したので、ルータの安定性とかルーティングやフィルタの機能もそんなでもなくていい事に気付いた。それがあってBA8000 Proを選んだんだったな。非常にいいものでしたけど。

ネットを調べたら、みなさんNEC Aterm WR8700Nイチオシなんですね。

確かにコイツはよさそうだ。だがしかし、繰り返しになりますが、もうそんな安定性を求めてないので安いほうがいい。

ただ、MacのTime Machineでバックアップをとったりするのに、有線はGigaBitが欲しいところ。

いろいろ探した結果、今回はPLANEX MZK-WG300NXをチョイスしました。

PLANEXの評判は様々ですが、BLW-04GMが長持ちしたので私的にはかなり好印象なんです。

昨日の朝注文して、お急ぎ便で夕方に届くも、翌日深夜に設定するなどしていて、お急ぎする意味ね〜と自分にツッコミながらサクっと設定完了。

う〜ん、速い!暫くおかしくなりかけのネットワーク接続で、我慢してたので快適すぎる。

自宅LANならデフォルト設定そのままでほぼOKだし、変更したのはWPA2のパスフレーズと、SSIDを非通知に変えたくらいでした。ラクチン、ラクチン。

これでネット見るのが快適になって、ひきこもりには嬉しい環境が帰ってきた(・∀・)

<追記>

その後、PCやiPhoneからWi-Fiに繋がりにくい状況が発生し、ファームウエアのアップデートをすると改善されることが分かりました。ファームウエアの修正対象には全くそんな記載ないのに...

何度 http://localhost:9000/@tests を表示しても

Action TestRunner.index not found

と言われてしまう。

結論としてはコンパイルされた一時ファイルが壊れていたようで、tmpの中身を全消ししたら直った。

あとで気づいたが、play cleanというコマンドがあった。

こいつはtmpフォルダごと消すようで、対応としてはあながち間違ってなかったようだ。

このアーカイブについて

このページには、2011年8月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年6月です。

次のアーカイブは2011年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。