TimesTen ttendaemon.option

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數據庫。

發佈了130 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章