TimesTen學習(四)Data Manager守護程式
《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
啟動Linux大頁支援TimesTen,在ttendaemon.options檔案中加入以下內容:
-linuxLargePageAlignment Size_in_MB
Size_in_MB是在/proc/meminfo中Hugepagesize的值,單位是MB。
10.配置子伺服器程式執行緒堆疊大小。-linuxLargePageAlignment Size_in_MB
Size_in_MB是在/proc/meminfo中Hugepagesize的值,單位是MB。
設定每個客戶端連線的子伺服器程式執行緒堆疊的大小,在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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 守護程式
- Node 程式守護
- rstatd守護程式
- gated 守護程式
- Linux 守護程式和超級守護程式(xinetd)Linux
- 程式守護 supervisor
- 守護程式那些事
- Linux 守護程式Linux
- java學習Java程式設計:什麼是守護執行緒?Java程式設計執行緒
- Timesten學習1
- Timesten學習2
- PHP 實現守護程式PHP
- Golang 程式守護 SupervisorGolang
- PHP 編寫守護程式PHP
- 守護城市安全:時空資料與深度學習深度學習
- Python編寫守護程式程式Python
- Linux守護程式及SystemdLinux
- Windows守護程式簡單示例Windows
- 守護程序
- rsync 守護程式及實時同步
- rsync 守護程式備份報錯
- opentracker改造為daemon守護程式
- Linux下的守護程式分析Linux
- 程式守護系統,你懂嗎?
- 用Python實現守護程式Python
- 深入理解Linux守護程式Linux
- 一個簡單的守護程式
- TimesTen學習(三)遠端連線TimesTen資料庫資料庫
- Java 多執行緒學習筆記(三)-守護執行緒Java執行緒筆記
- 使用 swoole 實現程式的守護(三)
- 使用 SWOOLE 實現程式的守護(一)
- 使用 SWOOLE 實現程式的守護(二)
- Linux基礎命令---httpd守護程式Linuxhttpd
- Linux守護程式的啟動方法Linux
- .Net Core 程式守護之Supervisor使用
- laravel佇列之Supervisor守護程式Laravel佇列
- Linux下開發-守護程式(daemon)Linux
- shell 指令碼實現的守護程式指令碼