サーバの増強を行いました。(だいぶ前の話ですが。)
今日は有給休暇の消化。あと5日。
(元ネタは前回のブログで)
今年最初の船橋競馬場へ行ってこようかと思っていたんですが…
……なんか寒すぎない???
気温5度しかないの???
家から出たくない(-_-)
このあと夕方に出かけるかどうかわかりませんが(多分出かけない)
ひとつ書きためておいたブログをUPしておこうと思います。
これより下の話…普通に書いてますが…
昨年8月に書こうと準備しておいたネタ。
実際に新しくなってからは半年近くたっています。
---
まずは増強前のサーバ構成を。

Webからページを表示させるのに「なんか遅いなぁ」とずっと考えてました。
どこがネックになってるんだろうか?と。
まあおそらく原因は1つじゃなくて
・ページの作り(ロジック)が悪い
・家の中のネットワークが遅い
・データベースの作り(テーブル構成)が悪い
などなど…
で、ずっと気になっていたのは
データベースの処理が遅い
ということ。
具体的にどういうことかというと…上の図を見ていただくとわかるんですが
データの更新と読み込みを1つのデータベースで行っているということ。
データの更新中は一部の読み込みがロックされたり処理に遅延が発生するのです(データの不整合を防ぐため)
ということで
書き込み用のデータベースと読み込み専用のデータベースを分けたらどうか?
という考えに至ったわけであります。
っつーことで増強後のサーバ構成はこちら。

バッチプログラムやWebからのデータ更新処理は上のデータベースサーバ(基本となるデータベース)へ
Webからの読み込み処理は下のデータベースサーバ(レプリカのデータベース)へ
と完全に切り分け。
上のデータベースで書き込まれた内容は
データベースプログラムの内部処理で下のデータベースへ複製(レプリケート)
Webからのデータ読み込み処理(いわゆるSQLを使う読み込み)とは完全に別で動くので
処理に遅延が発生することがありません。
ただひとつネックなのは
読み込み処理に遅延は発生しないものの、複製が完全に即時ではないので
上でデータを更新してから下で読み込めるようになるまでにタイムラグが発生します。
実際に計ったわけではありませんが…おそらく数秒。
それでも全体の処理が遅れるよりかは…まだマシでしょうかね。
ということで実物はこんな感じです。
サイズ感を見ていただくため馬券とともに。

---
去年のお盆休みの間にこの増強を実施(ブログの下書きもその時書いてた)
それからおよそ半年弱くらいでしょうかね。
安定して動いています。
このあと実際にWebの表示が早くなったのか?で言うと
うーん…結局あんまり変わらなかった気がする。
で、海外のIPアドレスを全拒否する設定をしたところ…劇的にスピードが改善。
結局原因はそこだったのかよ!となったのは年末年始での話。
今は(以前に比べれば)かなり早く
ページが表示されるようになったと思います。
あとこまごまと遅いところは…これはもう完全にページの作りが問題。
今後のリニューアルの時にでもロジックを総見直ししないとダメなやつですね。
---
さて。
管理人は今週末から
今年最初の遠征に出かけます。
次のブログではその遠征の詳細を書いておこうと思います。
(元ネタは前回のブログで)
今年最初の船橋競馬場へ行ってこようかと思っていたんですが…
……なんか寒すぎない???
気温5度しかないの???
家から出たくない(-_-)
このあと夕方に出かけるかどうかわかりませんが(多分出かけない)
ひとつ書きためておいたブログをUPしておこうと思います。
これより下の話…普通に書いてますが…
昨年8月に書こうと準備しておいたネタ。
実際に新しくなってからは半年近くたっています。
---
まずは増強前のサーバ構成を。

Webからページを表示させるのに「なんか遅いなぁ」とずっと考えてました。
どこがネックになってるんだろうか?と。
まあおそらく原因は1つじゃなくて
・ページの作り(ロジック)が悪い
・家の中のネットワークが遅い
・データベースの作り(テーブル構成)が悪い
などなど…
で、ずっと気になっていたのは
データベースの処理が遅い
ということ。
具体的にどういうことかというと…上の図を見ていただくとわかるんですが
データの更新と読み込みを1つのデータベースで行っているということ。
データの更新中は一部の読み込みがロックされたり処理に遅延が発生するのです(データの不整合を防ぐため)
ということで
書き込み用のデータベースと読み込み専用のデータベースを分けたらどうか?
という考えに至ったわけであります。
っつーことで増強後のサーバ構成はこちら。

バッチプログラムやWebからのデータ更新処理は上のデータベースサーバ(基本となるデータベース)へ
Webからの読み込み処理は下のデータベースサーバ(レプリカのデータベース)へ
と完全に切り分け。
上のデータベースで書き込まれた内容は
データベースプログラムの内部処理で下のデータベースへ複製(レプリケート)
Webからのデータ読み込み処理(いわゆるSQLを使う読み込み)とは完全に別で動くので
処理に遅延が発生することがありません。
ただひとつネックなのは
読み込み処理に遅延は発生しないものの、複製が完全に即時ではないので
上でデータを更新してから下で読み込めるようになるまでにタイムラグが発生します。
実際に計ったわけではありませんが…おそらく数秒。
それでも全体の処理が遅れるよりかは…まだマシでしょうかね。
ということで実物はこんな感じです。
サイズ感を見ていただくため馬券とともに。

---
去年のお盆休みの間にこの増強を実施(ブログの下書きもその時書いてた)
それからおよそ半年弱くらいでしょうかね。
安定して動いています。
このあと実際にWebの表示が早くなったのか?で言うと
うーん…結局あんまり変わらなかった気がする。
で、海外のIPアドレスを全拒否する設定をしたところ…劇的にスピードが改善。
結局原因はそこだったのかよ!となったのは年末年始での話。
今は(以前に比べれば)かなり早く
ページが表示されるようになったと思います。
あとこまごまと遅いところは…これはもう完全にページの作りが問題。
今後のリニューアルの時にでもロジックを総見直ししないとダメなやつですね。
---
さて。
管理人は今週末から
今年最初の遠征に出かけます。
次のブログではその遠征の詳細を書いておこうと思います。
このネタへのコメント:
コメントはありません。
原付生活(3)