Oracle 9i RAC 互聯效能

hunterjoy發表於2010-11-15

Oracle 9i RAC 互聯效能
摘自:



內容
提要 Oracle 9i RAC (Real Application Cluster)提供比單一例項更好的可用性和可擴充套件性,當前使用者越來越多的開始採用RAC的系統,使用者在傳統單一例項上的監視和調整系統CPU,記憶體和硬碟的技能和經驗,通常在RAC環境中同樣適用。然而在RAC環境中有更多需要使用者考慮的問題。
Oracle 9i RAC 多節點的結構引入了一個新的硬體模組 -- RAC 節點間的網際網路絡,用於協調各個節點的執行,包括全域性鎖(global locking),佇列(enqueue)和快取管理(buffer cache management)。RAC是一種較新的技術,對於節點間互聯的方式和效能的資料還很少,本文將對此進行一些分析,這些分析基於IBM pSeries 伺服器和使用者的實際工作負載.

正文 1. RAC 互聯配置
在IBM pSeries環境下RAC支援以下的互聯選項,基於UDP協議的100Mbps或千兆的乙太網,基於IBM專利技術的SP Switch和SP Switch 2。大多是RAC的環境使用千兆乙太網,因為千兆乙太網能夠在相對低的成本下,為大多數商業應用提供足夠的頻寬和可忍受的網路延遲。100Mbps的乙太網更適合於低負載的測試環境,而SP Swith 2則適用於大型、高負載和對反應時間要求嚴格的複雜應用環境。

通常RAC的環境下,在公用網路的基礎上,需要配置兩條專用的網路用於節點間的互聯,在HACMP/ES資源的定義中,這兩條專用的網路應該被定義為"private"。在例項啟動的過程中,RAC會自動識別和使用這兩條專用的網路,並且如果存在公用"public"的網路,RAC會再識別一條公用網路。當RAC識別到多條網路時,RAC會使用TNFF (Transparent Network Failvoer Failback)功能,在TNFF下所有的節點間通訊都透過第一條專用的網路進行,第二條(或第三條等)作為在第一條專用的網路失效後的備份。



CLUSTER_INTERCONNECTS是在Oracle RAC中的一個可選的初始化(init.ora)引數。此引數可以指定使用哪一條網路用於節點間互聯通訊,如果指定多條網路,RAC會在這些網路上自動進行負載均衡。然而,當CLUSTER_INTERCONNECTS設定時,TNFF不起作用,這將降低RAC的可用性,任何一條節點間網際網路絡的失效,都會造成RAC一個或多個節點的失效。

在AIX環境中Oracle資料庫在單一例項下的效能調整方法(如: 非同步I/O,VMM等)對Oracle RAC環境仍然有效。但在Oracle RAC環境下,需要考慮其他一些問題。RAC採用UDP協議進行節點間的互聯通訊,因此與UDP有關的一些引數需要調整。建議udp_sendspace的起始值為db_block_size * db_file_multiblock_read_count,udp_recvspace設為udp_sendspace的4倍,上限為1048576。如果發生socket快取溢位(可透過 netstat -s | grep "socket buffer overflows" 命令察看) udp_recvspace引數值需要增加。

Oracle STATSPACK報告包含很多對於節點間互聯效能的資訊。首先應該檢視的是“Top 5 Timed Events”,在RAC的環境中,“global cache cr request”通常會出現在這裡,如果這個事件(event)在整個“Total Elapsed Time”中只佔很小的比例 (如下例所示) 表示RAC中節點間通訊工作正常,否則,如果佔的比例較大,表示節點間通訊有問題。



在"Cluster Statistics"部分包含了很多關於節點間通訊效能的資訊,如Global Cache Service (GCS)的平均響應時間 (average response times) 尤其是關於get和reveive相關的事件。下面所示的是RAC在Switch 2環境下的資料,其頻寬和網路延遲都大大好於千兆乙太網。





小結:
對於Oracle RAC來說,節點間通訊的效能是需要特殊考慮的。節點間互聯的網路提供"global cache coherency","global locking"和其他RAC管理的功能。工業標準的千兆乙太網為大都數基於RAC商業應用提供令人滿意的效能,如果對於效能有更高的要求就需要選用IBM的SP Switch2。

 

一道考題:

Oracle 9i或者10g的Real Application Cluster(RAC)版本,在AIX作業系統上是使用User Datagram Protocol(UDP)協議作為interprocess通訊的,為了提高Oracle的效能,需要調整UDP引數的設定。需要使用no命令來修改udp_sendspace和udp_recvspace引數。如:Ø 將udp_sendspace引數設定成為[(DB_BLOCK_SIZE*DB_FILE_MULTIBLOCK_READ_COUNT)+4096],並且不小於65536Ø 將udp_recvspace引數設定為>=4*udp_sendspaceØ 如果需要,增加sb_max引數(預設是1048576),因為sb_max必須>=udp_recvspace為了確定udp_recvspace是否設定的合適,可以使用如下的哪一個命令:
A) netstat -s|grep "socket buffer overflows"
B) lsattr -El udp_recvspace
C) no -a|grep udp_recvspace
D) 以上都不是

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

相關文章