Java教程

TimesTen学习(四)Data Manager守护进程

本文主要是介绍TimesTen学习(四)Data Manager守护进程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

    
这篇文章将重点讨论一下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--  


这篇关于TimesTen学习(四)Data Manager守护进程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!