‘yo2’

httperf 一个高性能的压力测试工具

星期三, 五月 14th, 2008

ttperf is a tool for measuring web server performance. It provides a flexible facility for generating various HTTP workloads and for measuring server performance. The focus of httperf is not on implementing one particular benchmark but on providing a robust, high-performance tool that facilitates the construction of both micro- and macro-level benchmarks. The three distinguishing characteristics of httperf are its robustness, which includes the ability to generate and sustain server overload, support for the HTTP/1.1 and SSL protocols, and its extensibility to new workload generators and performance measurements.

  Httperf 是一个高效的 http 压力测试工具,使用它可以模拟出超过1千的并发访问,能充分测试出 web server 的性能。而之前使用的 siege 测试工具则未能突破 500 个并发测试(如果您知道如何可以实现,请告诉我)

使用 httperf 应该能了解到自己编写 yo2cache 软件性能极限如何了 :)

以下是 gzip 格式访问的测试数据(因缓存文件以 gzip 格式保存,所以性能是最高的)

oneoo@oneoo-pc:~/Desktop$ httperf --server oneoo.com --num-conns 2000 --add-header "accept-encoding: gzip"
httperf --client=0/1 --server=oneoo.com --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --add-header='accept-encoding: gzip' --num-conns=2000 --num-calls=1
Maximum connect burst length: 1

Total: connections 2000 requests 2000 replies 2000 test-duration 1.304 s

Connection rate: 1533.7 conn/s (0.7 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 0.6 avg 0.7 max 6.3 median 0.5 stddev 0.2
Connection time [ms]: connect 0.0
Connection length [replies/conn]: 1.000

Request rate: 1533.7 req/s (0.7 ms/req)
Request size [B]: 81.0

Reply rate [replies/s]: min 0.0 avg 0.0 max 0.0 stddev 0.0 (0 samples)
Reply time [ms]: response 0.6 transfer 0.0
Reply size [B]: header 302.0 content 10482.0 footer 0.0 (total 10784.0)
Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0

CPU time [s]: user 0.29 system 1.01 (user 22.4% system 77.6% total 100.0%)
Net I/O: 16273.4 KB/s (133.3*10^6 bps)

Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0

以下是 deflate (2级压缩率)格式访问的统计数据(需要从 gzip 解压,再压缩为 deflate 的数据处理)

oneoo@oneoo-pc:~/Desktop$ httperf --server oneoo.com --num-conns 2000 --add-header "accept-encoding: deflate"
httperf --client=0/1 --server=oneoo.com --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --add-header='accept-encoding: deflate' --num-conns=2000 --num-calls=1
Maximum connect burst length: 1

Total: connections 2000 requests 2000 replies 2000 test-duration 4.113 s

Connection rate: 486.2 conn/s (2.1 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 2.0 avg 2.1 max 11.8 median 2.5 stddev 0.3
Connection time [ms]: connect 0.0
Connection length [replies/conn]: 1.000

Request rate: 486.2 req/s (2.1 ms/req)
Request size [B]: 84.0

Reply rate [replies/s]: min 0.0 avg 0.0 max 0.0 stddev 0.0 (0 samples)
Reply time [ms]: response 0.6 transfer 1.5
Reply size [B]: header 305.0 content 11014.0 footer 0.0 (total 11319.0)
Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0

CPU time [s]: user 0.91 system 3.20 (user 22.2% system 77.8% total 100.0%)
Net I/O: 5414.3 KB/s (44.4*10^6 bps)

Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0

以下是 deflate (4级压缩率)格式访问的统计数据

oneoo@oneoo-pc:~/Desktop$ httperf --server oneoo.com --num-conns 2000 --add-header "accept-encoding: deflate"
httperf --client=0/1 --server=oneoo.com --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --add-header='accept-encoding: deflate' --num-conns=2000 --num-calls=1
Maximum connect burst length: 1

Total: connections 2000 requests 2000 replies 2000 test-duration 5.329 s

Connection rate: 375.3 conn/s (2.7 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 2.6 avg 2.7 max 32.8 median 2.5 stddev 0.7
Connection time [ms]: connect 0.0
Connection length [replies/conn]: 1.000

Request rate: 375.3 req/s (2.7 ms/req)
Request size [B]: 84.0

Reply rate [replies/s]: min 374.8 avg 374.8 max 374.8 stddev 0.0 (1 samples)
Reply time [ms]: response 0.6 transfer 2.0
Reply size [B]: header 305.0 content 10457.0 footer 0.0 (total 10762.0)
Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0

CPU time [s]: user 1.29 system 4.01 (user 24.2% system 75.2% total 99.4%)
Net I/O: 3975.4 KB/s (32.6*10^6 bps)

Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0

以下是文本格式访问的统计数据

oneoo@oneoo-pc:~/Desktop$ httperf --server oneoo.com --num-conns 2000 --add-header "accept-encoding: normal"
httperf --client=0/1 --server=oneoo.com --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --add-header='accept-encoding: normal' --num-conns=2000 --num-calls=1
Maximum connect burst length: 1

Total: connections 2000 requests 2000 replies 2000 test-duration 2.349 s

Connection rate: 851.3 conn/s (1.2 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 1.1 avg 1.2 max 5.8 median 1.5 stddev 0.2
Connection time [ms]: connect 0.0
Connection length [replies/conn]: 1.000

Request rate: 851.3 req/s (1.2 ms/req)
Request size [B]: 83.0

Reply rate [replies/s]: min 0.0 avg 0.0 max 0.0 stddev 0.0 (0 samples)
Reply time [ms]: response 0.6 transfer 0.6
Reply size [B]: header 278.0 content 42562.0 footer 0.0 (total 42840.0)
Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0

CPU time [s]: user 0.62 system 1.73 (user 26.2% system 73.7% total 99.9%)
Net I/O: 35683.0 KB/s (292.3*10^6 bps)

Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0

从以上数据可以看到 yo2cache 性能挺好的,最高能达到每秒 1500 个并发处理。性能瓶颈是出现在缓存数据的解压与压缩处理上,如果缓存空间足够大的话,可以考虑保存多种格式的缓存数据,就能解决这个瓶颈问题。

  而在 deflate 数据压缩方面,因为2级压缩率与4级压缩率所产生的数据量差距不大,但并发性能有一定差距,可以考虑使用 2 级压缩率。

无条件为你

星期五, 三月 21st, 2008

手:梁静茹

歌词:

爱你等于拥有 一片天空任何风吹草动

都有你存在其中 自然而然的轻松

一路到 夏天的尾声无所谓 到过于激动

我们有笑容 我们曾心动不再是 无动于衷

无条件为你 不顾明天的安稳为你变坚强 相信你的眼神

不敢想 不敢问 有一天坏的可能

无条件为你 放弃单独的旅程为你坚强 就不怕牺牲

我的灵魂 如此沸腾 为我爱的人

喜欢复杂还是 习惯单纯我愿尽力完成

你在我心中几分 难以形容的责任

爱一个人 付出才会完整无条件

越爱就越深 永远不分 啊

这首歌不是我送给老婆听的,而是送给所有的 Yo2 用户,希望大家喜欢。

Yo2服务的是一个群体,我们需要为这个群体负起责任!

关于 Yo2 关键字处理

星期一, 三月 10th, 2008

们开始启用关键字过滤程序,是我们实在不希望做的。Yo2 代表着国内BSP的创新,我们的服务一直都比较有个性的,也因此碰过不少壁。无奈在现在的国oo情之下,如果要能够继续提供稳定快速的博客服务,也只好采取一定的屏蔽策略。

  也许你会发现我们Yo2实行的并不是传统的简单关键字替换操作,我们是为了尽量减少对博客文章的影响,才专门为此开发的功能,只对小部分重点,且日常少用到关键字才做 ** 的替换操作,而其他只是加入干扰码处理。干扰码处理,基本不影响正常的文章阅读。

  汉字的自由组合程度很高,这个我们是知道的。也是因此我们才采取了分级处理的方案,并且对于部分关键字不会列入到审核统计数据中,目的就是为了尽量减少正常文章被程序误判的可能性。我们每天都在根据文章审核列表中出现的关键字,对系统的词汇表进行优化,尽量减少对博客正常浏览的影响。

  这些过滤程序对 Feed 无效,其他 Feed 服务商读取到的数据都是原汁原味的,当然可能其他的 Feed 服务也会有关键字替换的可能。

  WJC 通常是程序自动从互联网上截取页面内容,并寻找其中包含的关键字,如果包含有一定的数量就会触发,递交到WJ手上,WJ并通知机oo房要求删oo除此文章。如果一个IP频密出现这些文章,WJ就很可能要求机oo房停oo止该服务了。

  我们为此就更换过三次机房和IP,1月的事情还历历在目。尤其这段时间,WJ的处理更加严格。而我们也只好做出这样的对策,希望用户们可以体谅,谢谢!

(注: 文中 oo 部分为我自己个人的屏蔽操作,与Yo2系统无关)

100 的总结

星期五, 二月 29th, 2008

博客生涯终于达到100个文章了,从 05 年真正开始写博客到现在,总共写了 100 个原创文章 :) 自家的博客当然得原创,干嘛要转载人家的来充门面呢。

Blog 统计

共 99 篇日志 ,559 条评论,6 个分类,66 个标签

自从搬家到 Yo2 后,博客的评论数量也渐渐多起来。一是我跟大家交流的机会多了,二是Yo2创始人的缘故吧。

  自个的英文名是 oneoo 也是 100 的意思,所以我就借此机会总结一下吧。

  在过去的一年多时间里,我主要负责 Yo2 WordPress 开发到 Yo2 主站的功能开发,和兼任客服工作。跟网友们度过了一年多的时间,期间有不少问题和挫折,在网友们的支持下,我们能够克服重重困难和障碍,一步一步的,慢慢的走到今天 :)

  06年第一阶段,刚开始建立起来的 Yo2 还只限于 WordPress 博客服务,WordPress 版本是2.0,并且模板插件的数量都是相当的少,还不支持模板上传和编辑的功能。Yo2 的服务器也只有上海电信机房一台。

  07年第二阶段,就增加了相册和做事的功能,WordPress 版本是2.1。主站有好几个出于 blogtd.org(乖乖) 非常可爱的广告图片。WordPress 部分就增加了比较多的模板和插件,并且支持模板上传和编辑功能。经过半年多的测试,终于在10月就开始对绑定域名的服务进行收费,这个可以说是我们的里程碑之一。服务器方面呢则在昂贵的电信通机房租用有一台服务器,在比较贵的世纪互联机房租用有两台服务器,和杭州的 cdn 加速服务器。并且在广东建立了自己的数据中心,博客页面的处理工作都是由数据中心负责的。因为用户的不断膨胀,旧的系统因先天性的架构缺陷,导致博客服务质量比较差,经常会出现504页面处理超时的故障。

  08年第三阶段,为优化页面处理的效率,对整站系统进行了巨大的升级,WordPress 版本是2.3。新版的服务架构可以说达到了无限制用户量。并且在博客页面的访问上,进行了大量的细致优化,细小到博客的一个css文件和图片。可以说我们 Yo2 提供的WordPress博客服务是地球上速度最快的!(当然国外访问因为跨国线路出口的问题,依然很慢)服务器方面,除了电信通机房的服务器停止使用外,其他机房的服务器都保留,并且在广东的双线机房租用有一台服务器。算起来我们 Yo2 现在已经拥有6台服务器了。

  08年展望,这是个奥运年,今年充满了希望,但同样也有危机。因为奥运开博客的网友应该会有一定的增长,而也是因为奥运可能在内容管理上会出现不明朗的问题。为迎接将要来临的奥运,Yo2 会努力解决服务器线路的稳定问题,保持我们的博客服务良好运作。而同时需要对主站的系统来一次大的升级改造,现在主站的功能都比较简单,不能构建起很好网络社区。

  在过去的一年 Yo2 可以说是没有任何的网络推广工作,而在今年我们的首要任务就是把我们的服务推广到全国,把 Yo2 品牌建立起来。

  经过这一年多服务,我们得到了很多宝贵的经验。现在的博客服务已经由我们优化到了极致,整个系统架构已经非常成熟,只要我们的服务器线路不出什么问题,整套系统绝对能够非常稳定的为大家提供服务!

  我非常感谢一直支持我们的网友,没有大家的支持,Yo2 是很难走到今天的。谢谢大家 :) 我们不会辜负大家的期望,竭尽全力为大家提供稳定的、功能强大、自定义能力高的 WordPress 博客服务。

China Internet ;(

星期六, 十二月 15th, 2007

家都熟知世界上最远的距离是电信到网通和教育网。在这样的环境下,一个网站的带宽成本估计会比国外的高出许多。

  一个网站要让在这三张网下访问都快的话,它就需要租用多线线路,一下子就把电信、网通、教育网的线路都接到服务器上(多线服务器,或许是中国独有的产物吧,当然外国的情况可能有比我们更糟的,我还不知道),自然大家访问的速度就快了。但租用多线线路的费用比单线的贵很多。网站用户多的话,可以在每个线路上都摆放服务器,然后使用智能DNS服务,让访问者可以自动解析到相同线路的服务器上进行访问。Yo2 就同时采用了这两个方式给用户提供服务。

  除了网络不互通外,还有其他很多麻烦事。比如内容审查,地区上的电信路由可能会因某些原因,而把你的IP封了,当然你可能不知道它为什么这样做。你联系它也是基本无法解决问题 _-!! 这就造成网站出现地区性的无法访问。

  Yo2 在过去的一年时间就经历过,机房被攻击、因敏感内容拔服务器网线、IP被个别地区路由封闭等等突发事件。因我们投入的服务器资源还是比较多的,都分布在不同地区的机房,能够很快就切换到其他服务器上,但怎么快也是需要设置生效时间哦 :) 这还得用户体谅一下。

  就在这个月11号左右,我们上海的服务器就出现地区性路由关闭连接的情况,因我们此前已经留有河南的服务器作为备用,在13号确定此服务器所在的网络无法及时修复时,我们就切换到河南的服务器上提供服务了。

  也就是说我们要多租用多一倍左右的服务器,以应付这类突发事件。当然随着网站的成长,所拥有的服务器资源会更多,也就可以更快的做出调整,服务器成本也相应降低一些。

  我们的服务器一直都是正常运行,系统软件都搭配得很好。从未出现过服务器死机这类问题。但服务器的网络线路不在我们的掌控下,so~ charles 就经常为此而烦恼。把服务器调来调去的 _-!!还真辛苦他了 :D

分页: 2/5 上一页 1 23 4 5 下一页