目录
super-smack(DB)压测软件背景介绍
super-smack安装讲解
中间件和没有中间件下压测效果对比
迅雷休闲游戏大厅目前架构讲解(监控、集群、层次结构)
super-smack(DB)压测软件背景介绍
super-smack是一款流行的开源基准测试,用来测试不同操作系统平台即其上数据库的性能,目前支持mysql、PostgreSQL两款开源数据库,这个工具程序现在由 Tony Bourke 维护。
使测试获得好得数据效果,两个标准的性能指标:
1 最大化CPU利用率
2 减少由于IO造成的延迟、提高命中率
super-smack安装讲解
一、下载
super-smack
下载地址:http://vegan.net/tony/supersmack/
源码:http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz
注:需要本地装一个mysql客户端,用与测试远端DB的连接。
二、使用
将程序提供的 smack 样本文件重新拷贝一份,然后编辑此文件,
填入相应的连接信息,比如用户名、密码、端口和测试所用的数据库名。
cp -r /src/smacks /home/user
三、编译及安装
配置编译选项:
./configure --prefix=/usr/local/super-smack-1.3 --with-mysql --with-smacks-dir=/usr/local/super-smack-1.3
请根据测试的数据库来选择 --with-pgsql --with-oracle 或 --with-mysql
super-smack安装讲解
三、重点说明一下--with-mysql的编译配置:
编译的时候要把/usr/lib64目录下的libmysqlclient.so.16放到/usr/lib目录下,否则会出现下面的错误:
configure: error: Could not find libmysqlclient in ' /usr/lib /usr/lib/mysql /usr/local/lib /usr/local/lib/mysql /usr/local/mysql/lib
configure: error: Could not find mysql.h in ' /usr/include /usr/include/mysql /usr/local/include /usr/local/include/mysql /usr/local/mysql/include'
四、编译及安装:
make;make install
super-smack安装讲解
五、我们在数据库里建一个表:
CREATE TABLE `http_auth` ( `username` char(255) NOT NULL, `pass` char(25) DEFAULT NULL, `uid` int(11) DEFAULT NULL, `gid` int(11) DEFAULT NULL, PRIMARY KEY (`username`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
六、导入数据
导入数据:
1.mysqlimport -L -usmack -psmack -h192.168.0.26 smack /var/smack-data/http_auth.dat
2.在mysql命令行,执行 Loading data from file '/var/smack-data/http_auth.dat' into table 'http_auth' terminated by ','
五、开始运行
默认是测试MYISAM表的性能:
例:super-smack —d mysql select-key-mysql.smack 10 1000 //(10 是连接客户的数目,每个客户有1000次轮询)
super-smack安装讲解
结果
Query Barrel Report for client smacker1
connect: max=66ms min=0ms avg= 62ms from 10 clients
Querytype numqueries maxtime mintime qpers
select_index 20000 0 0 4360.61
这表示 super-smack 运行了10个客户,客户连接最长时间为66毫秒,最短的则没有延迟,平均时间为62毫秒。Super-smack 总共执行了20000此查询,每个查询所花时间都小于1毫秒。整个测试期间,服务端平均每秒执行了4360.61次 select_index 型查询。
Cluster环境中中间件和没有中间件下压测效果对比,(请见压测文档数据)
压测结果请见附件:
迅雷休闲游戏大厅目前架构讲解
各服务详细说明
目录Server
目录Server对用户而言,相当于是一个接入服务器,用户从这里获取游戏列表(以及游戏的房间列表);用户获取到相关信息后,就关闭tcp连接。
用户信息Server
(1) 客户端通过此Server获取到用户的积分等游戏相关信息
(2) 其它server对用户信息的访问(更新)都通过此server进行;
由于其它的逻辑Server可能分布在不同地区的机房,因此对用户信息的访问要通过此server进行,不能直接访问DB。
逻辑Server
逻辑Server是用户进入了具体的某一个游戏后,需要保持session长连接的server;用户的每个动作都发到这个服务器,同时也会收到服务器转发的其它玩家的信息。目前采用每个游戏分区独立运行一个逻辑Server的形式进行管理。
各服务详细说明
逻辑Server采取两层结构:接入端(前端)和逻辑端(后端)。接入端只负责网络I/O的处理,把接收到的完整命令包存放到共享内存区域的队列中;逻辑端负责业务逻辑的处理,它从共享内存的队列中取出用户请求信息,进行处理(具体处理逻辑通过加载不同游戏动态库实现),处理完成后将响应包存放到共享内存的另一个队列,再由接入端将响应包发送给游戏客户端。由于请求包/响应包存放在共享内存中,这样当逻辑端Server重启后,用户请求信息并没有丢失(客户端与server的session连接也仍然保持),重启后可以继续处理。而接入端由于逻辑比较单一,一般不需要重启。
各服务详细说明
用户(位置)状态Server
用户(位置)状态Server用户记录用户在各个游戏房间中的登陆情况,防止用户多点登陆。如果发现用户在一个游戏中同时登陆多个房间,会通知逻辑server将用户踢出房间,只保留最近一个登陆的房间。
升级gameserver进程/更新so
目前gameserver采用主备机的方式,即一台机器(或一个server进程)正式运营,另外一台机器(或server进程)备用,其中备用机所拥有的游戏分区在dirsvr中被屏蔽。当升级/更新的时候,先在备用机器上部署程序和so,等进程重启动后,在管理后台修改所属分区的屏蔽标志为“不屏蔽”,同时将运营机所属分区屏蔽标志位改为“屏蔽”,(等待一段时间让dirsvr刷新目录信息后)即可完成server切换。在旧的运营机上用户都结束游戏后,可以对改机器进行升级维护,成为新的备用机。
监控端
1、监控端本地和多机房部署
2、端口监控
3、URL监控
4、日志特征码监控
集群
1、DNS调度集群
2、数据库热备、NAS集群方式
3、中间件HA架构,两台互为热备
接入层
1、游戏分区服务冗余部署。
2、逻辑端、IDC网络、负载故障实现自动感应切换。
3、各应用服区过载保护
业务逻辑层
1、逻辑处理服务多机房部署
2、到DB端cache处理
数据层
1、数据存储实现NAS结构
2、中间件(amoeba)连接池缓存处理及HA的实现。
3、数据库读写分离
4、排名、汇总操作热备上进行。
THE END!
共享式学习 项链式法则 !
本文原创自无线技术运营空间: http://wireless.qzone.qq.com 及 http://blog.csdn.net/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:[email protected])