`
wangzl2222
  • 浏览: 151314 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Tokyo Tyrant(TTServer)系列-启动参数和配置

阅读更多
Tokyo Tyrant(TTServer)系列-启动参数和配置

数据库类型
下面我们再来看下数据库类型的详细配置。

    数据库名的命名方式被Tokyo Cabinet的抽象API指定。
    如果数据库名为"*",表示内存hash数据库。
    如果数据库名为"+"表示内存tree数据库。
    如果数据库名为".tch",则数据库为hash数据库。
    如果数据库名的后缀为".tcb",数据库将为B+ tree数据库。
    如果数据库名的后缀为".tcf"。则数据库将为fixed-length数据库。
    如果数据库名的后缀为".tct",则数据将为一个table数据库(有表的概念)。
数据库的调整参数通过数据库名的延伸来指定,通过"#"分开,每个参数通过一个参数名和值来指定,

用"="隔开。

内存hash数据库支持"bnum", "capnum", 和 "capsiz"

内存tree数据库支持"capnum" 和 "capsiz"

    capnum指定记录的最大容量,capsiz指定最大的内存使用量(在内存数据库中),记录通过存储 的顺

序移除。

hash数据库支持"mode", "bnum", "apow", "fpow", "opts", "rcnum", 和 "xmsiz".

`rcnum'指定最大的缓存 记录数。如果它不大于零,那么缓存记录不可用。默认不可用。
xmsiz 指定外部内存的大小。如果不大于0,内存不可用。默认是67108864,即64M。
`bnum' 指定bucket存储桶的数量。如果指定的数目不大于0,将会使用默认的数值131071.推荐数量应

该在所有需要存储的记录总数的0.4-4倍
`apow' 跟一个key关联的记录数,2的N次方表示. 如果不指定,默认2^4=16.
`fpow' specifies the maximum number of elements of the free block pool by power of 2. 默认

2^10=1024.
`opts' 指定选项,位或:`HDBTLARGE' 指定数据库的大小通过使用64位数组桶能够超过2G。
                      `HDBTDEFLATE' 指定每个记录被Deflate encoding压缩 。
                      `HDBTBZIP' 指定每个记录被BZIP2 encoding压缩
                      `HDBTTCBS'指定每个记录被 TCBS encoding压缩 .


B+ tree数据库支持"mode", "lmemb", "nmemb", "bnum", "apow", "fpow", "opts", "lcnum", "ncnum",

和 "xmsiz".
Fixed-length 数据库 支持 "mode", "width", and "limsiz".
Table 数据库支持 "mode", "bnum", "apow", "fpow", "opts", "rcnum", "lcnum", "ncnum", "xmsiz", 和

"idx"
      "idx"指定表的索引。
    "mode"可以包含 "w" 写, "r" 读, "c" 创建, "t" 截断,"e" 无锁,和"f" 非阻塞锁。默认的的mod为"wc"

优化 性能

    如果使用hash数据库我们可以指定#bnum=xxx来提高性能。xxx大于或等我我们的记录总数。

      如果使用B+ tree数据库我们可以通过指定"#lcnum=xxx#bnum=yyy" 来提高性能.第一个参数指定被

缓存的最大叶子节点数,受内存容量限制,第二个参数指定桶的数量,它应该大于总记录数的1/128.

    如果有大量的客户端连接,确保我们的文件描述符够用。系统默认是1024,我们可以用使用“ulimit”来

重新设定

比如下面的单机实例启动脚本(一个正在线上运行的脚本):

#!/bin/sh
ulimit -SHn 51200
ttserver -host 192.168.0.136 -port 11212 -thnum 8 -dmn -pid /data/ttserver/ttserver.pid -log

/data/ttserver/ttserver.log -le -ulog /data/ttserver/ -ulim 128m -sid 1 -rts /data/ttserver/ttserver.rts

/data/ttserver/database.tch#bnum=10000000#xmsiz=434217728#rcnum=20000
使用hash数据库,最大会缓存20000个记录,最大使用内存434217728bytes(414M),bucket存储桶的数

量10000000。

目前的库大小:

-rw-r--r-- 1 root root 28G Mar 8 12:19 bbsdatabase.tch

 

因为使用了64位操作系统,所以文件大小不受2G的限制。

我们再看下读取数据的速度:

当前获取memcache Threads_cdb_threads_tid3565732_displayorder_0 使用时间

0.00054812431335449
以上是程序打印 出来的通过memcache协议读取key为memcache

Threads_cdb_threads_tid3565732_displayorder_0的数据所花的时间0.00054812431335449(s),可以看

到速度还是非常快的。

启动实例

个人推荐通过修改ttservctl来实现启动。下面我们举几个简单的启动例子。

单机启动例子,下面是ttservctl文件的部分:


#! /bin/sh

#----------------------------------------------------------------
# Startup script for the server of Tokyo Tyrant
#----------------------------------------------------------------


# configuration variables
prog="ttservctl"
cmd="ttserver"
basedir="/var/ttserver" #数据库存放的路径,比如改为"/data/mydata"
port="1978" #启动的端口
pidfile="$basedir/pid"
logfile="$basedir/log"
ulogdir="$basedir/ulog"
ulimsiz="256m"
sid=1
dbname="$basedir/casket.tch#bnum=1000000" #上面讲的数据库类型配置
maxcon="65536"
retval=0


双机互为主辅模式,比如两台机器的Ip分别为192.168.1.176和192.168.1.1.177,以下为ttservctl文件的

一部分。

176的配置:

#! /bin/sh

#----------------------------------------------------------------
# Startup script for the server of Tokyo Tyrant
#----------------------------------------------------------------


# configuration variables
prog="ttservctl"
cmd="ttserver"
basedir="/data/data/data1"
port="11211"
pidfile="$basedir/pid"
logfile="$basedir/log"
ulogdir="$basedir/"
mhost="192.168.1.177" #主ip即另外机器的ip
ulimsiz="256m"
sid=6#注意要每台机器不一样
dbname="$basedir/casket.tch#bnum=100000000#xmsiz=104857600#rcnum=1000000"
rts="$basedir/ttserver.rts" #在ttservctl基础上增加
maxcon="65536"
retval=0


# locale clear
LANG=C
LC_ALL=C
export LANG LC_ALL


# start the server
start(){
printf 'Starting the server of Tokyo Tyrant\n'
ulimit -n "$maxcon"
mkdir -p "$basedir"
if [ -f "$pidfile" ] ; then
    pid=`cat "$pidfile"`
    printf 'Existing process: %d\n' "$pid"
    retval=1
else
    $cmd \
      -port "$port" \
      -dmn \
      -pid "$pidfile" \
      -log "$logfile" \
      -ulog "$ulogdir" \
      -ulim "$ulimsiz" \
      -sid "$sid" \
      -mhost "$mhost" \#在ttservctl基础上增加
      -mport "$port" \#在ttservctl基础上增加
      -rts "$rts" \#在ttservctl基础上增加
      "$dbname"
    if [ "$?" -eq 0 ] ; then
      printf 'Done\n'
    else
      printf 'The server could not started\n'
      retval=1
    fi
fi
}

 

177的配置:
#! /bin/sh

#----------------------------------------------------------------
# Startup script for the server of Tokyo Tyrant
#----------------------------------------------------------------


# configuration variables
prog="ttservctl"
cmd="ttserver"
basedir="/data/data/data1"
port="11211"
pidfile="$basedir/pid"
logfile="$basedir/log"
ulogdir="$basedir/"
mhost="192.168.1.176" #主ip即另外机器的ip
ulimsiz="256m"
sid=7#注意要每台机器不一样
dbname="$basedir/casket.tch#bnum=100000000#xmsiz=104857600#rcnum=1000000"
rts="$basedir/ttserver.rts" #在ttservctl基础上增加
maxcon="65536"
retval=0


# locale clear
LANG=C
LC_ALL=C
export LANG LC_ALL


# start the server
start(){
printf 'Starting the server of Tokyo Tyrant\n'
ulimit -n "$maxcon"
mkdir -p "$basedir"
if [ -f "$pidfile" ] ; then
    pid=`cat "$pidfile"`
    printf 'Existing process: %d\n' "$pid"
    retval=1
else
    $cmd \
      -port "$port" \
      -dmn \
      -pid "$pidfile" \
      -log "$logfile" \
      -ulog "$ulogdir" \
      -ulim "$ulimsiz" \
      -sid "$sid" \
      -mhost "$mhost" \#在ttservctl基础上增加
      -mport "$port" \#在ttservctl基础上增加
      -rts "$rts" \#在ttservctl基础上增加
      "$dbname"
    if [ "$?" -eq 0 ] ; then
      printf 'Done\n'
    else
      printf 'The server could not started\n'
      retval=1
    fi
fi
}


from http://hi.baidu.com/stone_ll/blog/item/a55a95004f66a20d1c95835a.html

分享到:
评论

相关推荐

    C#版Tokyo Tyrant客户端

    1. 连接管理:TTClient可以建立到Tokyo Tyrant服务器的连接,支持配置不同的连接参数,如主机地址、端口号等。连接池的概念也可能被应用,以提高性能并管理资源。 2. 数据操作:客户端提供API接口,用于执行基本的...

    tokyo tyrant文档

    安装Tokyo Tyrant后,可以通过`ttserver`命令启动主进程,以提供网络接口,使其他应用可以通过网络访问Tokyo Tyrant数据库。 #### 配置tokyotyrant数据文件存放目录 Tokyo Tyrant的数据文件通常需要指定一个存放...

    memcached,mongdb,redis,Tokyo Tyrant的安装和使用

    例如,Memcached适合简单的键值对存储,MongoDB适合处理复杂的文档结构,Redis适用于需要高速读写和多数据结构操作的场景,而Tokyo Tyrant则提供了一个轻量级的解决方案。 在学习和使用过程中,可能会涉及到的知识...

    ttserver

    "ttserver" 是一个基于 Tokyo Cabinet 的服务器程序,主要用于数据存储和管理。Tokyo Cabinet 是一个非常著名的键值存储系统,提供了高效、轻量级的数据持久化解决方案。它支持BDB(Berkeley DB)和HDB(Hash DB)两...

    TTserver1.1.4

    如果你正在使用或打算使用"TTserver1.1.4",理解Tokyo Tyrant的基本特性和工作原理将有助于优化你的应用性能。同时,查阅该版本的具体更新日志和文档,能帮助你更好地了解这个版本的新特性与改进。

    tokyo cabinet tyrant研究资料

    Tokyo Cabinet 和 Tokyo Tyrant 是一组开源的数据库管理系统,由日本公司 Resin Software 开发,主要用于数据存储和检索。这两个工具在IT领域中被广泛应用于日志管理、缓存服务、键值对存储等场景,尤其在需要快速...

    基于Tokyo Tyrant的智能电网数据处理与应用研究.pdf

    论文中所提及的关键技术和工具,如Tokyo Tyrant、J2EE、SOA框架等,都是支撑智能电网数据处理领域发展的重要技术。 首先,智能电网数据采集系统的构建是整个智能电网技术的基础。为了有效地采集和管理海量的电力...

    tokyotytrant

    Tokyo Tyrant-1.1.33是该数据库系统的一个版本,可能包含了性能优化、bug修复以及新特性的引入。升级或安装这个版本时,用户需要注意兼容性问题,确保与现有应用程序的无缝对接。在深入研究Tokyo Tyrant的内部实现时...

    Tokyo Cabinet Key:Value数据库及其扩展应用

    总结来说,Tokyo Cabinet和Tokyo Tyrant是针对高并发和大数据量需求的Key-Value数据库解决方案,通过调整参数如MMAP内存大小和bucket数组数量,可以在保持高效性能的同时,适应不断增长的数据规模。对于寻求优化...

    tokyoCabint及tokyoTyrant简介

    标题 "tokyoCabinet及tokyoTyrant简介" 指向了两个与数据库管理相关的开源工具,Tokyo Cabinet和Tokyo Tyrant。这两个工具由日本开发者开发,主要用于小型到中型的数据存储,尤其适合那些对数据读写速度有较高要求的...

    miyazakiresistance:MiyazakiResistance是ActiveRecord之类的库,可以使用Tokyo Tyrant

    宫崎电阻描述: MiyazakiResistance是一个类似于ActiveRecord的库,可以使用Tokyo Tyrant。 宫崎县抵抗支持师傅/奴隶。 如果从服务器关闭,它将自动分离。 宫崎骏电阻支持双主控(主动/待机)。 如果活动服务器关闭...

    nosql研发之路

    其中,键值存储数据库如Tokyo Cabinet/Tokyo Tyrant,以极高的读写速度著称,适合高速缓存和实时数据处理;文档数据库如MongoDB,以JSON文档形式存储数据,便于数据的检索和管理;列族存储数据库如HBase,适用于大...

    Tyrant - Java Roguelike-开源

    暴君是一款图形化的类Roguelike幻想冒险游戏。 它具有错综复杂的随机生成的景观,城镇和地牢。 它是用Java编写的,具有高度可扩展的游戏引擎。

    no关系型数据库,nosql

    Tokyo Cabinet具有高性能和多种存储引擎选择,Tokyo Tyrant则通过热备份、update log和异步复制提高可用性,并允许通过Lua脚本进行原子性操作。 3. MongoDB:MongoDB是一个面向文档的数据库,支持无固定规格的JSON...

    Tyrant II-开源

    《暴君2》是一款基于mikera 的roguelike,游戏玩法将进化为Angband,游戏世界将进化为Arena:Elder Scrolls。 关键词:游戏、Java、OOP、随机世界生成、AI、RPG、角色扮演游戏。

    tyrant-profiteur#daily_notes#前端随笔1

    1.1.标签 2.1.选择器 2.2.边距 3.1.sql拼写方法问题 3.1.在同一个页面同时使用两个ng-app问题

    PyPI 官网下载 | asynctnt-1.0b2-cp35-cp35m-manylinux1_i686.whl

    Tokyo Tyrant是一个键值存储系统,常用于数据缓存和轻量级数据库操作。`asynctnt` 库可能提供了异步API,允许开发者在不阻塞主线程的情况下处理TNT数据库的读写操作,这在处理高并发和I/O密集型应用时非常有用。 在...

    pandas-td-0.6.2.tar.gz

    Pandas是Python编程语言中广泛使用的数据处理和分析工具,而TD则是Tokyo Tyrant或 Treasure Data 的简称,这是一个云原生的数据仓库服务,常用于大规模数据处理和分析。这个压缩包可能包含了将Pandas与TD集成的代码...

    tokyocabinet-1.4.47.tar.gz

    Tokyo Cabinet是一款高效、轻量级的键值对数据库管理系统,它在IT行业中被广泛用于数据存储和检索。Tokyo Cabinet的设计目标是提供快速、可靠且占用资源少的数据存储解决方案,特别适合处理大量数据和高并发访问场景...

Global site tag (gtag.js) - Google Analytics