ttserver服务端命令
ttserver命令可以启动数据库实例,再启动的时候需要指定数据库的配置类型。
支持的数据库类型有:
内存HASH数据库;
内存TREE数据库;
HASH数据库;
B+TREE数据库;
命令格式:
ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-kl] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas]
[-sid num] [-mhost name] [-mport num] [-rts path] [-rcc] [-skel name] [-mul num] [-ext path] [-extpc name period] [-mask expr]
[-unmask expr] [dbname]
每个参数解释:
[-host name]:指定需要绑定的服务器功能变量名称或ip地址。.默认情况下,绑定这台机器上的所有Ip地址。
[-port num]:指定服务器启动的端口号,默认1978,如果启动多个数据库实例,端口需要不同。
[-thnum num]:指定服务器工作线程的数量,默认是8.
[-tout num]:指定每个会话的超时时间(单位为秒),默认永不超时。
[-dmn]:以守护进程方式运行。
[-pid path]:输出进程ID到指定文件。(这里指文件名,绝对路径)
[-kl]:如果发现进程id文件存在,杀死已存在的进程。
[-log path]:输出日志信息到指定文件。(这里指文件名,绝对路径)
[-ld]:在日志文件中还记录debug调试信息。
[-le]:在日志文件中只记录错误信息。
[-ulog path]:指定存放更新日志的目录,可以用来备份恢复数据库,主从库之间同步。(这里指目录名,绝对路径)
[-ulim num]:指定每个更新日志的大小限制。
[-uas]:使用异步IO记录更新日志。(使用此项可以减少写入日志的IO开销,但服务器被意外关机,进程被 KILL时可能会丢失数据。)
[-sid num]:指定服务器ID,主从复制模式的时候通过不同的ID号来区别。
[-mhost name]:指定主从复制模式下的主服务器的IP。
[-mport num]:指定主从复制模式下的主服务器的端口号。
[-rts path]:指定用于主从复制的时间戳存放文件。(这里指文件名,绝对路径)
[-rcc]:检查复制的一致性。
[-skel name]:指定主干数据库的名称。用户自定义数据库的名称。
[-mul num]:指定多数据库机制的分区数量
[-ext path]:指定扩展脚本语言文件。
[-setpc name period]:指定被周期调用的函数名和间隔时间。
[-mask expr]:指定被禁止的命令名(例如:禁止使用清空vanish)
[-unmask expr]:指定被允许的命令名。
[dbname]:指定的数据库名,如果省略,则被认为是内存HASH数据库。
我们使用内存HASH数据库,和HASH数据库,hash数据库名的后缀位".tch",内存hash数据库位“*”。
数据库的调整参数通过数据库名的延伸来指定,通过“#”分开,每个参数通过一个参数名和值来指定,用“=”隔开。
HASH数据库支持"mode","bnum","apow","fpow","opts","rcnum","xmsiz"。
"xmisiz":指定存储器映射尺寸,单位字节。32位机应用程序不能设置达到3G,因为rcnum还会指定占用存储器,所以建议32位机xmsiz配置2G;64位机不受这个限制。但都不能设置超过机器可用存储器。
在小数据量“特快”用法中,这个最重要的参数必须>=db档尺寸,依赖存储器来保证每秒几万的读写性能,缺点是耗存储器,例如db档几个月后达到8G,则xmsiz设置为8G;
在大数据量“普快”用法中,例如30G数据,xmsiz可小于db,例如8G,随机读写性能接近磁盘速度,依赖磁盘的性能,随机读写每秒只能几百次。“普快”用法中,即使不设置xmsiz,TT也会强制将刚启动时的db初始大小映射到存储器,包含header、hash桶,这些频繁访问的信息一定要在内存中,重启可修改。
"bnum":指定hash桶尺寸,用来保存计算完hash值后的每个key在db档的位置,要减少hash碰撞次数,推荐设置bnum为key个数的4倍(75%的一次命中率)以上,尤其是“普快”用法中依赖磁盘性能时,如一年后key要达到1亿个,bnum则设置为4亿。
碰撞的key依次用hash map链接起来,二分法查找,增加了磁盘读写次数;
该值默认很小是131071,最大可以设几十亿以上,bnum持久化到db档,全映射在内存,重启不可修改,能用tcrmgr optimize命令,慢慢重写db档。重启不可修改。
“apow”:默认4.
“fpow“:用来指定管理的空闲块数目,默认10表示2的10次方(即默认只能管理1024个空闲块,多余的成为碎片,不能重复利用),最大可设20(表示1024*1024)但CPU占用太高。
设置”#fpow=15”可满足批量删除32768个记录,经基准测试,设置fpow 10~17是OK的,重启后不可修改
”opts“: 指定压缩方式(hash的短数据压缩比不高)和bucket array对每条数据用4字节还是8字节保存档偏移量。
要支持db档>64G请加“#opts=l”。
要用gzip压缩记录后存储到db档,请加“#opts=d”。
要支持db档>64G并且用gzip压缩记录后存储到db档,请加“#opts=ld”。
hash方式单条数据平均长度<1KB时压缩效果差,所以hash一般不压缩。
记录数很少时,压缩让性能降低到30%,记录数越多降低越明显,重启后不可修改。
”rcnum“:rcnum参数控制的是缓存在内存中的记录条数。热点数据缓存hash map能缓存的记录数,在有明显热点数据时或xmsiz小于db尺寸时,需要设置这个参数,推荐设置为1000万~2000万,会把rnum条key和value不加压缩地放存储器cache。get时将key写到这个缓存,set时从缓存清掉该key,默认0不缓存,设置则最小256,B+tree不需这个参数。
"dfunit":动态碎片整理的步长,表示更新多少次记录后进行一次动态碎片整理(unit step number of auto defragmentation),而且碎片整理时只检查2 * dfunit个位置(记录或空闲块),发现记录的前面有空闲块则往前挪动记录.
如此逐步将db从头到尾整理一遍后再返回db档记录区的开始位置继续整理。
示例“#dfunit=1024”,默认为0表示不动态碎片整理,基准测试设置16~1024的范围是OK的. 重启可修改。
“mode":可以为w,r,c,t,e,f分别代表写、读、创建、截断、不锁、非阻塞锁,默认模式是“wc”。Mode不能设置为wr.
例子:如果使用的是哈希数据库,可以指定参数“#bnum=xxxx”来提高性能,它可以指定hash桶的数量。例如指定“#bnum=1000000,
./bin/ttserver -host 127.0.0.1 -port 11211 -thnum 4 -tout 10 -dmn -pid /home/yujiahua/tokyotyrant/tokyotyrant-1.1.41/output/ttserver.pid -log /home/yujiahua/tokyotyrant/tokyotyrant-1.1.41/output/ttserver.log -ld /data/tt_data/large_test.hdb#bnum=100000000#mode=wc#apow=4#fpow=20#opts=l#rcnum=0#xmsiz=1000000000#dfunit=0
如果大量的客户端访问ttserver,请确保档描述符够用。许多服务器的默认档描述符为1024,可以在启动ttserver前使用ulimit命令提高这项值。例如:
ulimit -SHn 51200