RAC負載均衡的簡單測試(三)

yangtingkun發表於2007-04-13

Rac環境安裝完成之後,打算簡單測試一下Oracle RAC的負載均衡功能。

RAC負載均衡的簡單測試(一):http://yangtingkun.itpub.net/post/468/279433

RAC負載均衡的簡單測試(二):http://yangtingkun.itpub.net/post/468/279754

這篇文章討論負載均衡與例項的忙閒是否有關。


透過上一篇文件的討論,RAC的負載均衡透過LISTENER建立的連線數有關。那個是否負載均衡只與這個因素有關,RAC的負載均衡和例項的忙閒狀態是否有關呢?

TESTRAC2例項上啟動兩個做迴圈操作的SQL,模擬系統資源被大量佔用的情況:

SQL> DECLARE
2 V_JOB NUMBER;
3 BEGIN
4 DBMS_JOB.SUBMIT(V_JOB,
5 'BEGIN
6 FOR I IN 1..1000 LOOP
7 FOR J IN 1..1000000 LOOP
8 NULL;
9 END LOOP;
10 END LOOP;
11 END;',
12 TO_DATE('2007-3-22 22:00:00', 'YYYY-MM-DD HH24:MI:SS'),
13 INSTANCE => 2);
14 COMMIT;
15 END;
16 /

PL/SQL 過程已成功完成。

已用時間: 00: 00: 00.53
SQL> DECLARE
2 V_JOB NUMBER;
3 BEGIN
4 DBMS_JOB.SUBMIT(V_JOB,
5 'BEGIN
6 FOR I IN 1..1000 LOOP
7 FOR J IN 1..1000000 LOOP
8 NULL;
9 END LOOP;
10 END LOOP;
11 END;',
12 TO_DATE('2007-3-22 22:00:00', 'YYYY-MM-DD HH24:MI:SS'),
13 INSTANCE => 2);
14 COMMIT;
15 END;
16 /

PL/SQL 過程已成功完成。

等到兩個JOB啟動之後,檢查作業系統的執行情況:

$ sar 1 10

SunOS racnode2 5.8 Generic_117350-46 sun4u 03/22/07

22:00:29 %usr %sys %wio %idle
22:00:30 94 6 0 0
22:00:31 94 6 0 0
22:00:32 95 5 0 0
22:00:33 91 9 0 0
22:00:34 93 7 0 0
22:00:35 91 9 0 0
22:00:36 92 8 0 0
22:00:37 95 5 0 0
22:00:38 94 6 0 0
22:00:39 96 4 0 0

Average 94 6 0 0
$

然後進行連線例項的測試:

SQL> CONN NDMAIN/NDMAIN@TESTRAC已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
testrac1

SQL> CONN NDMAIN/NDMAIN@TESTRAC已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
testrac2

SQL> CONN NDMAIN/NDMAIN@TESTRAC已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
testrac1

SQL> CONN NDMAIN/NDMAIN@TESTRAC已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
testrac2

SQL> DISC Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
斷開

SQL>

多個連線的測試:

E:>SQLPLUS NDMAIN/NDMAIN@TESTRAC

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 3 22 21:56:26 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
testrac2

SQL> HOST
Microsoft Windows 2000 [Version 5.00.2195]
(C)
版權所有 1985-2000 Microsoft Corp.

E:>SQLPLUS NDMAIN/NDMAIN@TESTRAC

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 3 22 21:56:40 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
testrac1

SQL> HOST
Microsoft Windows 2000 [Version 5.00.2195]
(C)
版權所有 1985-2000 Microsoft Corp.

E:>SQLPLUS NDMAIN/NDMAIN@TESTRAC

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 3 22 21:57:00 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
testrac2

SQL>

從上面兩個測試的可以看出,新增的連線仍然平均分配到兩個例項上。其實在測試前就基本上可以猜測到測試的結果,利用LISTENER的方式無法獲得例項的忙、閒狀態。所以,出現這種測試的結果也是情理之中。

看來,RAC的負載均衡只和透過監聽建立的連線數有關,而和其他因素沒有關係。Oracle的這個負載均衡,只是連線數的均衡,而不是效能上的均衡。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69238/,如需轉載,請註明出處,否則將追究法律責任。

相關文章