[Oracle]RACの負荷バランスの深さ解析


Oracle RACは、ユーザ接続時にシステムの現在の負荷状況に応じて、どのノードがユーザ要求を処理するかを決定する純粋な技術手段である2つの方法で負荷均衡を実現する。二つ目は業務向けで、人為的にアプリケーションを多くのserviceに分割し、あるserviceを通じて来た接続要求はいずれかのノードで処理される。この二つの手段を具体的に見てみましょう。
純技術手段(接続に向けた負荷バランス)
1.クライアント負荷バランスの設定方法は、クライアントのtnsnames.oraファイルにLOAD_uを設定することである。BALANCE=YESは、クライアントが接続を開始すると、アドレスリストからランダムに1つを選択し、接続要求を各インスタンスにランダムに分散する。この技術の最大の欠点は、各インスタンスの実際の負荷状況に従って要求を分散できないことであり、あまりにも粗いので、あまり使われないことである。
2.サーバー側の負荷バランスサーバ端の負荷バランスは、Listenerが収集した負荷情報に依存しています。データベースの運行中、pmonプロセスはシステムの負荷情報を収集し、定期的にListenerに更新します。もしあなたがRemoteを配置したらlistenerパラメータ、pmonプロセスは、負荷情報をローカルListenerに登録するだけでなく、他のインスタンスのListenerに登録することもできます。このようにpmon自動登録機構があると、クラスタの各ノードのListenerは、クライアント要求を受信すると、接続を負荷が最小のインスタンスに割り当てるノードの負荷情報をすべて把握する。
業務に向けた手段(Service負荷バランスを利用して)では、純技術による負荷バランスが美しく見えるが、実際に使うと、非常に大きな性能問題があるかもしれないと紹介しています。RACは、そのshare-diskのアーキテクチャのため、メモリ融合に大きく依存しており、純粋な技術的手段では業務の具体的な状況を知ることができないので、同じ業務の接続を各インスタンスに分散させ、大量のメモリ融合を引き起こし、性能が急激に低下することが知られている。もし私たちが考えを変えたら、同じアプリケーションの接続を同じ例に分けて、例えばAアプリケーションの接続をAインスタンスに接続して、Bアプリケーションの接続はBインスタンスに接続して、メモリの融合を効果的に減らすことができます。アプリケーションの区分はサービスで実現できます。DBAとオープンスタッフの協力が必要です。業務の特徴を理解した上でサービスを配置します。