Home

日記
PHPでmod_proxy_balancerのstickysessionは使えない?Edit

Apache 2.2のmod_proxy_balancerを使ってみようと思ったんだけど、どうもうまく動かない。PHP標準のファイルハンドラーセッションを使っていたんで、セッション初期化時にセッションIDに.[route]を付与するようにしたんだけど、ロードバランス以前にセッション自体が生成されてくれない。

と思ったら、

ファイルによるセッションハンドラは セッション ID として使える文字は a-z, A-Z, 0-9 に限られます

だったのね。ファイルセッションハンドラを使っていたからstickysessionを使いたかったんだけどなー。PHPではmod_proxy_balancerのstickysessionはあんまり使えないってことなのか? DBセッションハンドラとか使うんだったら、アプリケーションレイヤーで対応できるから、ファイルセッションハンドラを使っているときこそ、この機能を使いたかったのに。stickysessionでセッションIDに「.」を使わない設定ってできないのかなー。

追記というか訂正(2006/9/5)

この記事にリファラーがあったんで、訂正を追記しておこう。

何もPHPの標準セッションIDを直接stickyにするためのキーとして使わなくても、別にstickyにするためのキーとなるIDを振るようにすればいいだけじゃん。PHP標準のセッションID以外のCookieだったら、別に「.」の使用制限もないわけだし。

ということで、この元記事はなかったものとしてスルーすることを推奨します。

Published At2006-06-29 00:00Updated At2006-06-29 00:00

日記
すみません、データが飛びましたEdit

リニューアルテスト版周りのサーバー構成を大幅に変更しようと作業していたら、リニューアルサイト用DBのデータが吹っ飛んでしまいました。状況・原因ともによく分からないのですが、いくつかのテーブルが消えてしまい、データを復元するのが難しい状態になったため、初期データから入れ直しています。原因不明のため、またすぐにおかしくなる可能性もありますので、ご注意ください。

どうやら原因がわかった

今までレプリケーションスレーブ側にテストDBを作ってテストをしていたんだけど、そろそろ本番環境に近いものも用意しておこうかと、マスター側でDBをいじっているうちに、テストDBと同名のdropがいくつかレプリケーション側に流れちゃって……、ということらしい(レプリケーションがdropの不整合で止まっていた)。作業ミスでした、すみません。

Published At2006-06-30 00:00Updated At2006-06-30 00:00

日記
本番環境への移行を始めましたEdit

リニューアル版の本番環境への移行を始めました。MM/Memo以外の機能についてはいったん停止し、リニューアル版で該当する機能がある場合は、そのURLにリダイレクトをかけています。

また完成度は低いんですが、旧版を動かしながら新版を動かしていると、負荷的な悪影響が大きく、また管理も複雑になってしまうため、上記のようなミスが起こりやすくなるので、一気に新版に差し替えつつ、欠けている部分はおいおい埋めていく、といった形を取ることにします。

MM/Memoについては、まだ一通りの機能を新版に搭載するには時間がかかりそうなので、しばらく旧版のまま動かしておきます。

Published At2006-06-30 00:00Updated At2006-06-30 00:00

日記
tDiaryでリバースプロキシを使った場合のRSSEdit

リバースプロキシを使ったら、RSS内の絶対URLがリバースプロキシ越しにアクセスしたURL(http://localhost:8080/〜とか)になってしまった場合、tdiary.confに

@base_url="http://正しいルートURL/"

を追加すると直る。

Published At2006-06-30 00:00Updated At2006-06-30 00:00

日記
ノードAPIごしで属性インデックスを使いたい場合Edit

Hyper Estraierのノードマスタを使って作成したノードでは、もちろん属性インデックスは作成されないし、ノードAPIには属性インデックスを作成するコマンドは用意されていない。

属性インデックスは文書を登録する前に作成しておく必要があるので、ノードマスタから新しいノードを作成したら、ノードマスタをいったん終了し、コマンドラインからestcmdを使って該当のノードインデックス([ノードマスタディレクトリ]/_node/[ノード名])に属性インデックスを作成する必要がある。その後は、再びノードマスタを立ち上げて、ふつうにドキュメントを追加していくだけでいい。

というわけで、リニューアル版1470.netのユーザーごとのメモ検索(http://1470.net/user/[ユーザーID]/search/)で、検索結果をユーザーで絞るのにユーザーID属性に属性インデックスをつけてあげたら、検索がまともな速度で動くようになったよ。最初属性インデックスなしでやったら、2万ドキュメントくらいで目に見えて検索速度が落ちたけど、属性インデックスをつけたら2万ドキュメントくらいでもまだまだ余裕がありそう。

次にスケール的な壁にぶつかった場合は、P2Pで分散させることを考える必要が出てくるんだろうけど、それはどのくらい先のことだろう。うちではそこまで考える必要は出てこないかなー。

すみません、嘘でした

ノードマスターの機能として、属性インデックスを作成する機能がありました。Hyper Estraier開発者のmikioさんのコメントによれば、

_confファイルのattrindexをいじると、ノードを作成した時に自動的にインデックスが張られるようになりまっす。

ということでした。

ノードマスターを起動する前に、あらかじめ_confファイルに属性インデックスに関する設定を記述しておくことで、そのマスターで作られたノードに、指定した属性インデックスが作られるようになります。

そんなところに作成手段があったのかorz...。

Published At2006-06-30 00:00Updated At2006-06-30 00:00