TimesTen學習(四)Data Manager守護程式

lhrbest發表於2017-03-15

TimesTen學習(一)安裝篇http://blog.itpub.net/23135684/viewspace-717741/
TimesTen學習(二)連線建立第一個資料庫http://blog.itpub.net/23135684/viewspace-1189880/
TimesTen學習(三)遠端連線TimesTen資料庫http://blog.itpub.net/23135684/viewspace-1190342/

這篇文章將重點討論一下Data Manager守護程式相關的內容。

   首先我們要明確Data Manager Daemon守護程式是在TimesTen服務端安裝過程中就會建立的程式,透過ttDaemonAdmin -start|-stop啟動和停止(參考安裝篇)。

1.Data Manager Daemon的功能。

Data Manager Daemon包含以下的功能:
1).管理共享記憶體訪問。
2).協助程式恢復。
3).管理資料庫的統計資訊,例如,哪些資料庫在使用,哪些應用程式連線到了哪些資料庫。
4).管理記憶體策略。
5).開始複製程式、TimesTen伺服器和cache agent。

注意:應用程式是連線到TimesTen資料庫,而不是連線到Data Manager Daemon。

2.自動啟動Data Manager Daemon。

    如果想TimesTen例項在每次伺服器重啟的時候自動啟動,那麼以root使用者執行setuproot指令碼,setuproot指令碼被存放在<install_dir>/bin目錄下:
[root@ttdb ~]# cd /home/timesten/TimesTen/tt1122/bin
[root@ttdb bin]# ./setuproot -install
Would you like to install the TimesTen daemon startup scripts into /etc/init.d? [ yes ] yes
Copying /home/timesten/TimesTen/tt1122/startup/tt_tt1122 to /etc/init.d

Successfully installed the following scripts :
/etc/init.d/tt_tt1122
/etc/rc.d/rc0.d/K45tt_tt1122
/etc/rc.d/rc1.d/K45tt_tt1122
/etc/rc.d/rc2.d/S90tt_tt1122
/etc/rc.d/rc3.d/S90tt_tt1122
/etc/rc.d/rc5.d/S90tt_tt1122
/etc/rc.d/rc6.d/K45tt_tt1122

所有Unix平臺,Data Manager Daemon的啟動指令碼都被放置在/etc/init.d目錄下。

同樣可以透過setuproot對自動啟動進行解除安裝,例如:
[root@ttdb bin]# ./setuproot -help
setuproot [-install] [-uninstall] [-help] [-verbose]
        -install      Install TimesTen daemon startup scripts
        -uninstall    Un-install TimesTen daemon startup scripts
        -help         Display this help message
        -verbose      Display extra installation/uninstallation information

3.關閉TimesTen。

    TimesTen由被載入到共享記憶體的資料庫、使用者連線、replication和cache agents組成。關閉TimesTen將完成以下的工作:
1).友好的斷開使用者連線。
2).關閉所有replication和cache agent。
3).如果資料庫記憶體策略是manual,將從共享記憶體解除安裝資料庫。
4).停止TimesTen Daemon。

4.管理TimesTen Daemon選項。

    ttendaemon.options檔案包含了TimesTen Daemon選項。安裝期間,安裝程式根據在安裝提示輸入設定一些選項值,儲存在該檔案中。
在Windows平臺,ttendaemon.options檔案位於daemon home目錄下:
<install_dir>\srv\info

在Unix平臺,ttendaemon.options檔案位於daemon home目錄下:
<install_dir>/info

ttendaemon.options檔案控制著以下特性:

1).Daemon監聽的網路埠。
2).TimesTen例項中subdaemon的最小值和最大值。
3).是否啟動TimesTen伺服器。
4).是否使用共享記憶體段作為客戶端/伺服器的內部程式通訊方式。
5).系統預生成的伺服器程式數。
6).使用者日誌、支援日誌的位置及大小。
7).向後相容性。
8).TimesTen例項的最大使用者數。
9).資料透過NFS進行訪問,僅針對Linux環境。
10).Oracle Database TNS_ADMIN的值,該檔案的TNS_ADMIN選項值不能被修改。
11).致命錯誤之後調整預設的資料庫恢復。

ttmodinstall工具用於改變ttendaemon.options檔案的大多數公共選項,如果不能使用該工具修改的特殊選項,必須手動修改ttendaemon.options檔案,在手動修改前需要先停止TimesTen Daemon。

下面是TimesTen安裝後的ttendaemon.options檔案內容:

[timesten@ttdb info]$ pwd
/opt/TimesTen/tt1122/info
[timesten@ttdb info]$ cat ttendaemon.options 
# Commented values are default values
#-supportlog /opt/TimesTen/tt1122/info/ttmesg.log
#-maxsupportlogfiles 10
#-maxsupportlogsize 10485760
#-userlog /opt/TimesTen/tt1122/info/tterrors.log
#-maxuserlogfiles 10
#-maxuserlogsize 0x100000
#
-verbose
-tns_admin /opt/TimesTen/info
-server 53397

-server指定TimesTen Server監聽埠(這個是連線TimesTen資料庫的埠,和Daemon監聽埠要區分開)。

-serverpool number指定預產生的TimesTen伺服器程式數,這樣可以提高客戶端的連線請求的效能,如果沒有設定該值,那麼沒有程式是預產生的,程式的數量除了受到TimesTen配置影響外,還受到作業系統的限制。

-maxConnsPerServer NumberOfChildServerProcesses 該引數設定單一伺服器程式能夠處理的最大客戶端數,如果值大於1,那麼子伺服器程式執行在多執行緒模式,所以單一的伺服器程式能為資料庫的多個客戶端連線服務,該值的範圍在1到2047,預設值是1。如果該引數大於1,注意設定ServerStackSize引數值,參見第10點的內容。

-serversPerDSN NumberOfChildServerProcesses 在伺服器可以有多個伺服器程式服務多個輸入的連線,ServersPerDSN屬性指定初始化的伺服器程式數,每個新進入的連線產生一個新的伺服器程式,直到到達ServersPerDSN。當達到ServersPerDSN值,存在的伺服器程式處理多個連線,直到到達MaxConnsPerServer引數指定的值。該引數值的範圍是1到2047,預設值為1。

    maxConnsPerServer和serversPerDSN兩個引數是相關的,這兩個屬性不是用來限制透過DSN的客戶端連線數,它們控制怎樣在伺服器程式之間分發連線。例如,如果MaxConnsPerServer設定為2,ServersPerDSN設定為5,那麼會發生以下的情況:
1).到達資料庫的第一個連線會由第一個伺服器程式來處理,到達伺服器的連線2~連線5會由初始化的伺服器程式2~伺服器程式5來處理,每個程式對應一個連線。
2).到達伺服器的連線6,ServersPerDSN到達了限制值,MaxConnsPerServer沒有到達限制值,連線6會由第一個伺服器程式處理,到達的連線7~連線10由伺服器程式2~5處理。
3).到達資料庫的第11個連線,由於ServersPerDSN和MaxConnsPerServer兩個引數都到達限制值,所以新產生的伺服器程式6開始處理這個連線。

5.設定Daemon監聽地址。

   預設情況下,Daemon監聽伺服器所有的IP地址,如果需要固定監聽某一個或多個IP,那麼可以在ttendaemon.options配置檔案中加入如下的配置:
-listenaddr address
   監聽多個IP地址需要配置多條-listenaddr記錄,最多可以配置監聽4個IP地址。

6.TimesTen日誌。

   TimesTen日誌分為兩類:使用者錯誤日誌和支援日誌。使用者錯誤日誌類似Oracle Database中的告警日誌;支援日誌除了包含使用者錯誤資訊外,還包括Oracle技術支援需要的日誌資訊。

下面ttendaemon.options中的引數用於控制使用者錯誤日誌、支援日誌的位置和大小,以及系統中儲存的檔案數

-supportlog path -f path 指定支援日誌檔案的位置,預設地址是<daemon_home>/ttmesg.log。

-maxsupportlogfiles num 一旦日誌檔案到達了指定大小,TimesTen主Daemon自動迴圈日誌檔案,這個選項指定支援日誌檔案保留的個數,預設是10個。

-maxsupportlogsize nBytes 指定支援日誌檔案的最大值,預設是100MB。

-userlog logfile logfile:使用者指定使用的日誌檔案位置以及名稱,預設檔案是<daemon_home>/tterrors.log。
也可以是:
-userlog [syslog] syslog:將錯誤訊息傳送到對應的作業系統日誌檔案中。

-maxuserlogfiles num 這個引數和maxsupportlogfiles引數的含義相同,只是該引數用於限定日誌檔案。

-maxuserlogsize nBytes 指定使用者日誌檔案最大值,預設是10M。

-showdate 該引數只在UNIX平臺適用,表示日期應該出現在所有訊息的前面。

ttDaemonLog工具可以用來檢視日誌相關資訊。

設定-noserverlog選項可以禁止產生日誌。

7.修改subdaemon的個數。

TimesTen使用subdaemon執行以下的任務:
1).管理資料庫。
2).重新整理事務日誌快取到磁碟。
3).執行定期的檢查點。
4).實施各種表的老化。
5).發現並處理死鎖。
6).回滾直接方式下應用異常終止的事務。
7).執行資料庫必要的後臺過程。

    TimesTen主Daemon根據需要動態的生成subdaemon,可以手動指定daemon可能產生subdaemon的範圍,指定一個最小值和最大值,預設最小值是4,最大值是50。可以透過在ttendaemon.options檔案中配置-minsubs和-maxsubs兩個引數來設定新的值。

8.允許資料庫訪問NFS檔案系統。

    預設情況下,TimesTen系統不能訪問NFS檔案系統中的資料。在Linux x86 64bit的系統中,可以將checkpoint和事務日誌檔案放在NFS檔案系統中。
    如果要啟動訪問NFS檔案系統,在ttendaemon.options檔案中加入如下的引數:
-allowNetworkFiles

9.啟動Linux大頁支援。

    啟動Linux大頁支援TimesTen,在ttendaemon.options檔案中加入以下內容:
-linuxLargePageAlignment Size_in_MB
Size_in_MB是在/proc/meminfo中Hugepagesize的值,單位是MB。

10.配置子伺服器程式執行緒堆疊大小。

設定每個客戶端連線的子伺服器程式執行緒堆疊的大小,在ttendaemon.options檔案中加入以下的內容:
-ServerStackSize ThreadStackSize
    ThreadStackSize單位是KB,在32bit系統預設值是128KB,在64bit系統預設值是256KB,如果每個子伺服器程式最大客戶端連線數是1,ThreadStackSize設定將被忽略,因為單一的客戶端連線是透過子伺服器程式的主執行緒進行服務的。只有當maxConnsPerServer引數大於1才需要設定該引數。

11.客戶端透過IPC直接連線到伺服器共享記憶體段

    預設情況下,在應用連結的TimesTen驅動和TimesTen伺服器之間透過TCP/IP進行通訊。

如果客戶端應用和TimesTen伺服器在相同的機器上,針對IPC(內部程式通訊)可以直接連線到伺服器共享記憶體段。

例如,這個特性對在32bit客戶端應用與64bit資料庫進行通訊的時候在效能方面是有利的。

在ttedaemon.options檔案中加入-serverShmIpc引數告訴TimesTen伺服器嘗試客戶端透過IPC的方式直接連線到伺服器的共享記憶體段。

12.管理共享記憶體段大小

    啟用了透過IPC直接連線到共享記憶體段才需要設定該引數。
    在ttendaemon.options檔案中加入-serverShmSize size告訴TimesTen Server建立一個指定大小的共享記憶體段(MB),如果這個引數錯誤,TimesTen伺服器建立一個64MB大小的共享記憶體段。

一個合適的共享記憶體段大小依賴於:
1).預期併發連線到屬於同一個TimesTen伺服器例項的所有資料庫的數目。
2).在每個子連線中併發分配的語句數目。
3).一個查詢傳遞的資料量。

指導原則:
1).最大允許1Gb。
2).TimesTen需要1MB記憶體內部使用。
3).每個連線需要固定的16KB大小的塊。
4).每個語句佔用的空間會隨著查詢傳遞的資料量來增大或減小,TimesTen透過增加雙倍或減半的演算法來增大或減小語句快取大小。

    例如,如果使用者應用預期最多有100個啟用共享記憶體的客戶端/伺服器連線,如果每個連線預期最大有50個語句,最大返回128KB的資料,使用下面的公式配置serverShmSize值:
serverShmSize = 1 MB + (100 * 16) KB + (100 * 50 * 128) KB
              = 1 MB + 2 MB + 625 MB = 628 MB

如果共享記憶體段空間不夠,TimesTen將拒絕透過共享記憶體段的方式連線到TimesTen資料庫。

--end--

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

相關文章