前4)下8)次6) 初1)新3)書7) 板5)
Wiki編集議論スレPart2
199:sendo ◆i1WLBRb2PE 2014/03/08(土) 10:41:11 ID:u3lCfjjd0
また、別件なんですけど、トップページから最近の更新を撤去しようかなと思っています
先月12日に一時的にサーバーが落ちました。ご迷惑をお掛けして申し訳ないです。。。
この原因なんですが、一時的にデータベースへの最大同時接続数を上回ったからでした。
データベースへのキャッシュコネクションが多く保持されたままだったからだと思われます
技術的な話で申し訳ないです。。。下でまとめるので、読み飛ばしてもらってかまいません。。。
Wikiのデータはデータベースに格納してあり、ここからデータを読み出してWiki上に表示しています。
しかし、アクセスの度にデータベースにアクセスしていたのでは負荷が高くなりすぎてしまいます。
その為、このWikiではあらかじめデータベースのデータをキャッシュしたものをWiki上に表示しています。
要は、アクセスしてもデータベースには接続しない構成になってるんですよね。
ただ、これも限界があって、動的の部分(例えば特別ページや最近の更新など)はデータベースのものを読み込んでます。
トップページに最近の更新を表示している関係で、トップページにアクセスする度にデータベースにアクセスしてしまう状態です。
で、サーバーを守るためデータベースの最大接続数を設定しているので、これを超えるとサーバーが落ちてしまいます。
ただ、前回はその設定よりも多くのアクセスがあったというわけではないです。
データベースコネクションはうまく破棄されないことがあって、これが溜まってしまうとアクセス超過と同じ状態になります。
例えば最大接続数が2000だったとしても、前回のコネクションが残ったままだと2000未満でコネクションエラーになってしまいます。
コネクション破棄の期限は短く設定していますが、この期限内にトップページへのアクセスが多くなるとコネクションエラーを引き起こします。
まとめると
・ほとんどのページを閲覧する際はデータベースに接続してませんが、最近の更新を表示しているトップページを閲覧した場合はデータベースに接続されます。
・データベースへの最大接続数は限界があります(=サーバの処理能力ではないです)
・コネクションが残る場合がある為、最大接続数未満でもコネクションエラーを引き起こす可能性があります。
※ここで言う最大接続数はあくまでデータベースへの接続なので、Wiki本体の接続数自体は問題ないです。
ってことです。
なので、極力データベースへ接続しない構成にしたいため、トップページから更新履歴を撤去できたらなと。。。
代わりにWikipediaと同じくサイドバーに更新履歴を入れたいと思ってます。。。
ご意見頂けると嬉しいです。。。
上前次新1-板