-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
過負荷時の公開/非公開処理やキャッシュ制御の問題 #184
Comments
公開/非公開処理の開始と同時にファイルかDBかでロックを生成し、生成を確認してからゴニョゴニョ。という感じでしょうか。 |
はい、そのような流れでいいのかなと考えています。 懸念として「公開処理をしているプロセスが何らかの原因で中断した(落ちた)場合」で、ロック状態が残り続けると今度は公開/非公開が機能しなくなるという状態が発生します。 キャッシュの編集合戦もちょっと考えたいです。 過負荷状態の時に、/cache/の下を見てるとファイルができては消えてとめまぐるしかったです。 |
負荷を軽減する方法も必要っぽいですが、先に排他処理を実装したほうが成果を確認しやすくて |
ロックファイルが存在する間はキャッシュを見ない。 |
あと、キャッシュファイルの一括削除は、system関数が使えるかどうかを判定した上で、 |
|
system関数を利用しても一瞬というわけではないですね。そのsystem関数を実行したphpからするとワンステップに見えるだけで、結局system関数が実行した外部コマンドがなかでゴニョゴニョしている時間は必要になります。
phpのmkdir()を使うと「ロックファイル生成」と「誰かが作っているかどうか」を同時に確認できます。 ちょっと思いつきで書いただけなのでもうちょっと考えないとダメかなと思っています。 |
リクエストが非常に多いタイミングで公開/非公開処理が走るとうまく処理が行えない問題がありました。
ほぼ同時刻に大量のリクエストが発生し、それぞれのリクエストが公開/非公開状態を確認して処理を進めようとするため負荷も増大(DBにも更新が入るので通常の処理よりも重たい)。そしてキャッシュファイル編集合戦になり、キャッシュファイルが削除されたタイミングで偶然新しいリクエストがくると「キャッシュがないもの」として処理を進めたりでサイト全体の動作がちょっと読めない状態になってしまいました。
うまい解決方法はまだ思いついてはいませんが、少なくとも公開/非公開処理については排他処理を実装する事でだいぶ負荷も変わるのでは?と考えています。
The text was updated successfully, but these errors were encountered: