最近やっていること。
仕事のほうは、でかいところで、負荷対策に eAccelerator 突っ込んで php.ini と httpd.conf 調整してパフォーマンス5倍ぐらい上げたり*1、 PG のバグで DB のデータやられたのをバイナリログから全復旧中だったり*2、って感じ。
細かい仕事も多いけど、 php である程度スケーラビリティ高いアーキテクチャの作り方も見えてきたから纏めないとねえ。
あと、今後良く使いそうな予感がしてる pound に手を入れたい。ログを切るのはやりたくないんだけど、ドキュメント斜め読みした感じでは syslog にしかログ吐けないようで、それは鯖管的には非常に嫌なので、なんかのログファシリティ使って他に吐けるようにしたい。
今のところ、 php の Web アプリだとシングルサーバだとこんな感じで立てるのが一番パフォーマンスが良い気がする。
- pound -- リバースプロキシ
- squid -- 画像キャッシュ
- Apache + mod_ なんちゃら色々 -- Webアプリフロントエンド
- PHP + 何かの Accelerator (まだ eAccelerator しか試せていない) -- Web アプリバックエンド
ま、完全にこういう構成ってのは、まだやってみてないけど、サイトのボトルネックに拠って使い分けてる感じ。
基本的に、運用/パフォーマンスな話では、 J2EE/Oracle でしかやったことなかったから、ここ半年で試行錯誤してって感じだけど、この構成で行けるようにアプリ側を組んで貰えれば、スケーラビリティ上がりそうだなあという感触。
あと、恥ずかしい話だけど、 squid をドキュメントも読まずにWebの情報鵜呑みに設定して、リバースプロキシ兼キャッシュサーバとして立ててたら、踏み台にされてたって事があった。変な負荷でログ見てはじめて気がついた。
ま、多分、ドキュメント読んでも理解不足でやられてた気がするけどね。
でもさ、逆に運用向けな設定テンプレ系オープンソースプロジェクトとかあれば、みんな幸せになれる気がするんだけど、どうなんだろうね?
セキュアなところも負荷的なところもそうなんだけど、そういうところがエンジニア個々人に負担を掛け過ぎてる気がして何とかならないかなと考えたりしてる今日この頃。一元管理されてて、 apt とか yum とかで恒常的にアップデート出来るし、フィードバックを受け付ける事が出来るって仕組みがあれば、良いと思うんだけどなあ。
そんなこんなな最近です。