当心ttserver(tokyo tyrant)在系统崩溃或断电的时候丢失数据
2010-09-03 11:32
603 查看
[文章作者:孙立 链接:http://www.cnblogs.com/sunli/ 更新时间:2010-09-03]
在我前面的文章介绍了ttserver非常高的性能,也介绍过在大数据量下的可能出现的不稳定因素,但是如果是数据不是特别大(一般不要超过内存太多),那么使用ttserver还是非常合适的。最近在公司的测试环境中,出现了ttserver的数据全部为空的现象,问运维部门才知道出现了意外断电,部分测试系统记录了日志可以恢复,部分没有记录日志,数据就永远丢失了,还好是测试环境。其中一个ttserver已经跑了一年多了,居然数据都出现全部丢失的情况。
是ttserver的问题还是系统的问题?
下面我们来具体测试一下,在测试服务器启动两个ttserver,不记录日志
打印出两个ttserver各有30000条数据,马上把机器的电源给拔了。启动机器。启动ttserver 。telnet连上ttserver,发现两个端口的ttserver都只剩下10000条数据了。
结论:ttserver意外崩溃,进程直接kill -9 是不会丢失数据的,如果系统断电是会丢失数据的。这应该是ttserver只是把数据写到文件系统,并没有flush到磁盘造成的。
如何解决
ttserver 其实提供了一个同步命令sync(作者肯定知道丢失数据的问题,所以才有这个命令),可以把数据flush到磁盘,不过每次都调用,性能将会急剧下降。为了不降低性能,数据可靠性得到保证,可以采用记录日志的方式,出现意外断电可以从日志恢复数据。还可以使用主从复制,master丢失数据,slave的数据还在(本人推荐),也可以定期的执行下sync命令。
虽然断电,系统意外崩溃的情况比较少,但是如果是线上系统,还是应该考虑的,不然后悔就来不及了。
在我前面的文章介绍了ttserver非常高的性能,也介绍过在大数据量下的可能出现的不稳定因素,但是如果是数据不是特别大(一般不要超过内存太多),那么使用ttserver还是非常合适的。最近在公司的测试环境中,出现了ttserver的数据全部为空的现象,问运维部门才知道出现了意外断电,部分测试系统记录了日志可以恢复,部分没有记录日志,数据就永远丢失了,还好是测试环境。其中一个ttserver已经跑了一年多了,居然数据都出现全部丢失的情况。
是ttserver的问题还是系统的问题?
下面我们来具体测试一下,在测试服务器启动两个ttserver,不记录日志
<?php $mem=new Memcache(); $mem->addServer ("192.168.13.169",1979,false,1,100); $mem->addServer ("192.168.13.169",1978,false,1,100); $start=microtime(true); for($i=0;$i<50000;$i++){ $mem->add("bbs_pass_".$i,"INFO 127122222 a b c d{....}"); } print_r($mem->getExtendedStats()); echo microtime(true)-$start; ?>
打印出两个ttserver各有30000条数据,马上把机器的电源给拔了。启动机器。启动ttserver 。telnet连上ttserver,发现两个端口的ttserver都只剩下10000条数据了。
结论:ttserver意外崩溃,进程直接kill -9 是不会丢失数据的,如果系统断电是会丢失数据的。这应该是ttserver只是把数据写到文件系统,并没有flush到磁盘造成的。
如何解决
ttserver 其实提供了一个同步命令sync(作者肯定知道丢失数据的问题,所以才有这个命令),可以把数据flush到磁盘,不过每次都调用,性能将会急剧下降。为了不降低性能,数据可靠性得到保证,可以采用记录日志的方式,出现意外断电可以从日志恢复数据。还可以使用主从复制,master丢失数据,slave的数据还在(本人推荐),也可以定期的执行下sync命令。
虽然断电,系统意外崩溃的情况比较少,但是如果是线上系统,还是应该考虑的,不然后悔就来不及了。
相关文章推荐
- Tokyo Tyrant(TTServer)系列(六)-数据丢失谁的错
- Tokyo Tyrant(TTServer)系列(六)-数据丢失谁的错
- 手机系统崩溃丢失数据怎么恢复
- 在ghost还原系统的时候,选择了harddisk from image 丢失数据恢复
- iOS项目开发中,对后台返回数据为<null>时候的处理,避免取值产生程序崩溃问题
- 年度结转的时候,弹出“系统所用科目被删除,不能结转上年度数据”
- 系统崩溃!win10系统修复和数据恢复方法总结
- 用户指南:U盘数据为什么会丢失【免费xp系统下载】
- 四极管:关于突然掉电防止系统崩溃以及保护数据的一些拙见
- 如何在进程崩溃后打印堆栈并防止数据丢失
- 移动文档——避免重装系统丢失个人数据
- iOS项目开发中,对后台返回数据为<null>时候的处理,避免取值产生程序崩溃问题
- 给表空间增加数据文件的时候遇到ORA-00470错误,数据库也崩溃了!
- 拥有Windows8 从此不再担心重装系统丢失数据
- eclipse 开发android 项目的时候系统自动生成的R.Java文件在重新生成时候丢失问题
- windows 2000 advance server +oracle 9i系统崩溃后的数据恢复案例
- 怎么解决重装系统后硬盘数据丢失问题
- winhex恢复误GHOST系统造成的数据丢失
- Dynamo分布式系统——「RWN」协议解决多备份数据如何读写来保证数据一致性,而「向量时钟」来保证当读取到多个备份数据的时候,如何判断哪些数据是最新的这种情况
- 系统崩溃后 oracle 9i数据文件恢复过程!