2008年04月26日

RMagickのメモリーリーク対策。

先日サービス開始したモバイルコンテンツがありまして。
リリースしてからバグはいくつか見つかったけど、それ以外は安定稼動していたわけですが、エンドからサイトが激重で使えたもんじゃないとクレームが。

環境
・CentOS 5
・Apache 2.2.8 + mod_proxy_balancer + mongrel 1.1.2
・Ruby 1.8.4
・Rails 1.2.6
・RMagick 1.13.0
・ImageMagick 6.0.7.1-17

実際見てみると激しく重い。
こりゃ大変だとあわてて調査したところ、メモリ使用量が激増。swapまで目一杯使っているわけです。
とりあえずmongrelがとんでもないことになっているので再起動で解決。

その後、しばらく監視体制を敷いていろいろ調査してみたのですが、サービス開始して1ヶ月ほどで、まだたいした宣伝もしてないということで1日100件程度しかアクセスがないし、Google Botやらのクローラがものすごい勢いで増えて来てるくらいだけど、それ含めても重くなる原因にはちょっと足らない。この程度で重くなるっていうのはちょっとありえない。
開発前にベンチマークとったときも対して問題にはならなかったし。

さらに日を重ねて調べてみると、調査開始にはほとんど使ってなかったswapが半分以上圧迫されているので、やはりアプリのどこかに問題があるらしい。
ノーチェックなのはライブラリか?
Rubyで画像を扱う際に利用する定番「ImageMagick + RMagick」を利用してみたてるわけですが、どうやらこいつが怪しい。

調べてみると、RMagickにメモリーリークのバグがあるらしい。
http://techno.hippy.jp/rorwiki/?How+to+debug+memory+consumption+problems+or+memory+leaks
仕様って話もあるけど、その辺は詳しく調べてないのでよくわからない。


def run_gc
  fDisabled = GC.enable
  GC.start
  GC.disable if fDisabled
end


こいつを画像をいじった後に呼べば解決するらしい。
実際にコードを埋め込みベンチをとってみると、確かにメモリの増加量がちょっと減っているみたい。
でもベンチ結果を見る限り完全に開放されるわけじゃないっぽいので、サーバが止まるのは時間の問題ってことみたい。

それじゃ困るということで、解決策を考えた。
処理的には
・今まで
PCの管理ツールから画像をアップロードして元データをDBに格納

RMagickで携帯用にgif、pngに横320pxで変換して画像ファイルを配置

携帯からのアクセス時に解像度をチェック

解像度の横幅がピッタリな画像ファイルがあるかチェック

存在しない場合は解像度をあわせた画像をDBの画像データから生成し表示

・解決後
PCの管理ツールから画像をアップロードして元データをDBに格納

RMagickで携帯用にgif、pngのいろんな解像度の画像ファイルを配置

携帯からのアクセス時に解像度をチェック

ちょうどいいサイズの画像を表示

それと、一日一回cronでmongrelを再起動。

という感じになりました。
まぁ元の処理がひどいけど、結局はRMagickを呼ぶだけでメモリを確保しちゃうっぽいので、アクセスが多い携帯側ではRMagickを利用しない方向に急遽改修。
あとはあんまりしたくはないけど、mongrelの再起動をしてメモリを力技で開放が一番いいみたいです。

以上です。


ラベル:画像 ruby RMagick
posted by 何某。 at 18:10| Comment(0) | TrackBack(0) | Ruby on Rails | このブログの読者になる | 更新情報をチェックする

リポジトリから削除されたRails 1.2.6をインストールする。

現在進行中のプロジェクトのテストが一通り終わったので、本番環境にデプロイしようと思ったらRails 1.2.6がインストール出来ない。。。


# gem install rails --version 1.2.6 --include-dependencies
ERROR: could not find rails locally or in a repository


今更2.0に移行してテストし直すわけにもいかないので、とりあえずエラーメッセージで調べてみると、フォーラムに解決策があったのでメモ。

環境
・CentOS 5.1 64bit
・Ruby 1.8.5


# gem install --source http://gems.rubyforge.org rails -v 1.2.6 -y --include-dependencies
INFO: `gem install -y` is now default and will be removed
INFO: use --ignore-dependencies to install only the gems you list
Bulk updating Gem source index for: http://gems.rubyforge.org/
Successfully installed activesupport-1.4.4
Successfully installed activerecord-1.15.6
Successfully installed actionpack-1.13.6
Successfully installed actionmailer-1.3.6
Successfully installed actionwebservice-1.2.6
Successfully installed rails-1.2.6
6 gems installed
Installing ri documentation for activesupport-1.4.4...
Installing ri documentation for activerecord-1.15.6...
Installing ri documentation for actionpack-1.13.6...
Installing ri documentation for actionmailer-1.3.6...
Installing ri documentation for actionwebservice-1.2.6...
Installing RDoc documentation for activesupport-1.4.4...
Installing RDoc documentation for activerecord-1.15.6...
Installing RDoc documentation for actionpack-1.13.6...
Installing RDoc documentation for actionmailer-1.3.6...
Installing RDoc documentation for actionwebservice-1.2.6...


とりあえず解決してよかったけど、次からは2.0で開発するようにします。

以上です。
ラベル:ruby Linux Rails CentOS
posted by 何某。 at 17:16| Comment(0) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2008年04月20日

KAOSS PAD3がおもしろい。

えー、最近忙しいよ。どうも何某です。
こんばんわ。

今更ですが、これ買いました。
KORG KAOSS PAD KP3
KORG KAOSS PAD KP3
posted with amazlet at 08.04.19
KORG
売り上げランキング: 9288


飲み仲間でもあり、師匠でもあると勝手に何某が思っているM氏という方がいるのです。
バトルDJというジャンルを知るきっかけになった人、かつ、俺がターンテーブルを買うきっかけになった人。
偶然行きつけの飲み屋で、先日ばったり再会。

『エフェクター買おうと思ってるんですよ。』
「ほぅ。で、何を買うんです?」
『KAOSS PADってあるじゃないですか。あれがいいかなぁとか』
「なるほど。ちょっと待ってください。」

ごそごそとバッグをあさるM氏。

「ほら、見てください。手にとってどうぞ。3ですけど。」

なんで持ち歩いてんだこの人。

『そう、これこれ。これが欲しいなぁって思ってて。』
「ぜひ買うべきです。」
「直感的に扱えるし、手軽に持ち運べるからクラブイベントで重宝ますよ!
 簡単なサンプリングも出来るし。」

KAOSS PAD3の素晴らしさを1時間ほど語るM氏。
この人はエロいけど人間的に素晴らしい。魅きつける何かがある。エロいけど。

すっかりKP3に魅了されてしまい、今更ながらに購入を決意。
近所の楽器屋に向かいました。

『すいません。もう30歳なんですが、KAOSS PAD3が欲しいんですが大丈夫ですかね。』
「歳は関係ないと思います。」

ずいぶんcoolな店員だ。

「手軽に扱えますよ。ほら、こんな風に。サンプラーとしても使えます。」
『なるほど。』

触ってみるとほんとに手軽だ。これなら買ってすぐ扱えそう。

「サンプラーとしては他にもMPCがありますよ。どうですか。」
『や、欲しいですが1000で10万もするじゃないですか。』
「ちょっとお高いですか?500なら5万円程度ですから。触ってみますか。」

触ってみた。

ちょー欲しい。

それから1時間ほどいじりまくっていると、店員が両方買ったらすごく素敵ですと鬼プッシュしてくる。

すごく素敵。わかります。

『じゃ両方ください。』
「500ですか?1000ですか?」
『。。。。500で。』
「KAOSS PAD3とMPC500ですね。ありがとうございます。少々お待ちください。」

なぜか30分ほど待たされる。

「すいません。在庫ありませんでした。次の入荷が未定です。」

俺の2時間を返してくれ。

これは買わずに貯金しろということだなと思い、結局他も探さず購入せずに家に帰る。
黙って寝ようと思い布団に入ったが、寝れない。

結局翌日開店待ちの勢いで別の店でKAOSS PAD3を購入してしまいました。
でも買ってよかった。すごい楽しい。
おっさんの休日が日々充実していく感じがする。

GROOVE presents DJミックス・ファーストステップ feat.DJ KOMORI[DVD]
DJ KOMORI
リットーミュージック
売り上げランキング: 25845
ラベル:music DTM
posted by 何某。 at 00:47| Comment(4) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2008年04月12日

コーヒー豆を焙煎してみたよっ。

えー、お酒も入って上機嫌。
どうも何某です。こんばんわ。

自分は、コーヒー中毒であります。

どうやら、自他共に認めるほどエスプレッソと女は死ぬほど好きらしい。
イタリアンか俺は。
まさに、夜の貴公子。HASEBEはスケベ。

酒がなくなっても生きていけるけど、コーヒーがなくなったら結構きついです。

結構凝り性なほうなので、釣りをするなら釣り竿は作るわ、ルアーは削るわでして。
タバコも今じゃ手巻きタバコになってしまい、吸う度にいちいち手でくるくる巻いてます。
そうなると、コーヒーも自然とそういう方向に行ってしまうわけで。
焙煎するところからやりたくなってしまうと思われ。
つまるところ、吾郎的要素が好きなわけで。
やるなら今しかねぇ。

というわけで、コーヒー屋に行ってみました。
喫茶店というより、豆屋のFRESH ROASTER珈琲問屋
週末ここでエスプレッソマシーン用の粉を購入するのが、ここ2ヶ月くらい続いております。
近所にこういう店があってよかったというわけで、店員にいろいろ聞いて以下のを購入。

・豆を焙煎する道具
いるいる


・豆を挽く機械
常に人気の電動コーヒーミルメリタパーフェクトタッチ2【送料無料電動コーヒーミル】

※何某追記
いろいろ試したけど、どうしてもこれだとエスプレッソ用にはまだまだ挽きが荒いっぽいです。実際かなり荒い。
デロンギ KG346Jが調べるとおすすめらしいです。

んで、とりあえず生の豆を200gづつ購入。
マンデリン

エスプレッソでは結構定番らしい。

トラジャママサ

なかなかおもしろい味になるとか。

シャキシャキカフェよろしくにマンデリンをさっそく焙煎。
通常焙煎にはかなり時間がかかるらしいですが、いるいるだと3分くらいでパチパチいいはじめる。

このパチッっと豆がはじける音で、ビクッとする自分が好きだ。

火を止めて覗いてみるといい色と香ばしいなんともいえない香りが。
しばし見ていると、どんどん色が濃くなってくる。
調べてみると、豆自信の余熱で焙煎がどんどん進んでいくらしい。
こいつはまずいと、イタリアンローストっぽい色のところで皿に移し、雑誌で扇ぐ。
次にミルサーでエスプレッソマシーン用に極細に砕いて、マシーンに投入。

香りがすごい。

やっぱり、焙煎したてのひきたてで入れたコーヒーは香りがすごい。
がしかし、味はエスプレッソとはほど遠い。アメリカンって感じ。

なぜ?

焙煎がたらないのかな。何が悪いのかな。

とりあえず、喫茶店やりたくなるほどコーヒーって面白いなって思いました。

珈琲の楽しみ方BOOK―豆の選び方・挽き方、ブレンドの仕方がわかる (カンガルー文庫)
田口 護
成美堂出版
売り上げランキング: 7458
おすすめ度の平均: 5.0
5 coffee好きは必読
5 過不足ない記述
ラベル:コーヒー
posted by 何某。 at 23:24| Comment(1) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2008年04月08日

不機嫌な職場。

えー、久しぶりに良書と出会った。どうも、何某です。
こんばんわ。

久しぶりに良書と出会いました。

不機嫌な職場~なぜ社員同士で協力できないのか (講談社現代新書 1926)
河合 太介 高橋 克徳 永田 稔
講談社
売り上げランキング: 15
おすすめ度の平均: 4.0
5 利益だけでは協力はできない。
4 会社も生き物!?
4 不機嫌な職場とは、経営的課題なのか
5 プライベートを充実させることで、仕事の効率化を図る!
2 でもできるのかな〜職場の改善。


一気に読み終えてしまった。
サブタイトルには

「なぜ社員同士で協力できないのか」

とある。
いきなりだが、客観的にこの一冊を総評すると、

『昔からあることであり、今に始まったことではない。そして、そういった企業ではわかりきったことをただただ書いてある本。』

がしかし、あくまで客観的に読んだ場合である。
渦中にいる人にはその事例はものすごいショックと危機感を与える。まさに私がそうだ。
最初から最後まで頷きの連続であり、わかっていると思ってても、こうあっさりと突きつけられると負のスパイラルの怖さというのを改めて実感する。

帯から引用すると


  • 新しいことに参加してくれない

  • 熱意をこめて書いた提案メールに反応がない、あるいは冷やかな反応ばかり返ってくる

  • 何回頼んでも誰もきちんと対応してくれない

  • メールなどで一方的な指示をだしてきて、こちらの対応が遅いとキレる

  • 派遣社員やパート社員を名前で呼ばない

  • 困っている人がいても、「手伝おうか」の一言がない

  • 「おはよう」等の挨拶がなく、皆淡々と仕事を始める

  • イライラした空気が職場に蔓延し、会話がない

  • 隣の席にいる人とも、やりとりはメールのみ



こんな職場は要注意らしい。
帯だけでもほとんどの項目がうちの会社には当てはまるうえ、読み進めるとさらにほとんどの項目が当てはまる。
どうやらうちは危険らしい。

ただ単純に、当てはまるからといって、本当にダメかというとそうではないと個人的には考える。
中にはそういった空気のおかけで上手く回っている企業もあることを知っているし、急成長はなくとも、横ばいを続ける手段としてあえてその方針をとっている企業もある。
企業によるというのが個人的な結論だ。

がしかし、そういった状態を望んでいないのであれば、ぜひ自分の職場を頭でシュミレートしながら読んでいただきたい。
私の会社で言えば、社長は全く逆の方針を望んでいるが、実際はこの本のほとんどの事例が当てはまる。そして社長はその事実に気づいていない。
だからこそ、非常に興味深く読ませてもらった。

先にも述べたように、わかりきっていることを改めて突きつけられるショックというのを味わうべき。
そのうえで、改めて今の状態のほうがよいのか、改善したほうがよいのかを再考するのがいいと思われる。
上手く回ってるよね。と思うのであればそのままでよいし、まずいよね。と思うのであれば上司のデスクの上のこの本をそっと置くという手段もある。

成功事例として、この手の本ではよく取り上げられるgoogleなどを含め3例ある。
そのうちIT企業が2つ占めてるのが、IT業界の現状というのを逆に物語っている気がする。
googleを一昔前の日本の企業と似ているという表現が実におもしろいし、妙に納得できるところだ。
個人的には、もう少し多方面の業種の事例が欲しいところだが、まぁよしとしよう。

良くも悪くも、読んでおもしろい本だと個人的には評価する。
ラベル:business 書籍
posted by 何某。 at 00:36| Comment(1) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。