starling试用手记

twitter最近将ruby实现的消息队列服务器starling开源了,这是一个支持memcache协议的轻量级持久化服务器,因此使用php/perl/ruby/java等多种客户端都没问题,可以将较慢的处理逻辑通过消息队列放在后台处理,同时也支持多点分布式处理。周末找了个闲置的centos 5机器搭了一套starling试用,配合php的memcache扩展测试一番,有点意思。

starling安装步骤

centos默认不带ruby,得重新装,以下安装步骤都是以root身份跑的。

yum install ruby ruby-devel rubygems
gem install memcache-client starling

如果你使用yum找不到ruby的相关包,请记得添加epel repository。安装之后新增的程序:

  • /usr/bin/starling #一个ruby脚本,starling的服务程序
  • /usr/bin/starling_top #starling的状态检查程序,可以查看starling的运行状态,类似memcache的状态显示,不同的是能够显示每个key的状态

starling启动后默认会在22122端口蹲点守候。

为了使用方便,我修改了一个starling在centos下的启动脚本,放在/etc/init.d/starling,下载地址:http://customcode.googlecode.com/files/starling。使用方法:
/etc/init.d/starling start|stop|restart

测试程序

以下是在测试中用的php脚本,说实话php在循环比较大的时候没啥优势,但是关键是简单,几行就搞定了。

写入的测试程序

CODE:
  1. #!/usr/bin/php
  2. <?php
  3. $m = new Memcache;
  4. $m-> addServer ( '127.0.0.1', '22122' );
  5.  
  6. $start = microtime (true );
  7.  
  8. for ($i = 0; $i < 10000; ++$i ) {
  9.     //echo $i, "/n";
  10.     $m-> set ( 'testtesttesttest', '中文测试中文测试中文测试中文测试中文测试中文测试中中文测试中中文中a' );
  11. }
  12. echo "time:" . (microtime (true ) - $start ), "/n";

读出来的测试程序

CODE:
  1. #!/usr/bin/php
  2. <?php
  3. $m = new Memcache;
  4. $m-> addServer ( '127.0.0.1', '22122' );
  5.  
  6. while ( 1 ) {
  7.     echo $m-> get ( 'test' ), "/n";
  8.     usleep ( 100 ); // 休息一下,否则容易cpu 100%
  9. }

性能测试

测试条件:

  • key的长度16B
  • value的长度100B,
  • 8个并发写入进程
  • 每个进程插入10,000条记录

平均每个进程花了7秒完成写入操作,那么照这样计算:

10000 * 8 / 7 = 每秒写入11428次

以上测试进行的比较随意,而且我懒得插入大量数据来测试了,这个比较花时间,所以测试结果仅供参考。由于starling是目前twitter在生产环境中运行的,经过实践检验过,稳定性应该不成问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值