四、性能监控

2008.10.01 8:41 下午 »Author: bixuan »

四.性能监控

优化Web站点的首要任务就是对该站点进行监控,以便了解其模式和趋势。从监控中可以获知监控是否有助于站点。而且为监控所编写的脚本也可以用于负载测试。

 

性能参数

每个计算机系统都有4个传统的参数:

延迟

吞吐量

利用率

效率

优化系统性能就是要减少延迟、增加其他3个参数的值。尽管这个定义很直观,但优化本身并不直观,因为这些参数彼此之间可以互相消长,而且它们会随时间、服务内容种类已经许多其他环境改变而改变。另外,对某个机构的目标来说,有些性能参数比其他参数重要。

 

延迟和吞吐量

延迟:是指请求与开始看到结果直接的间隔时间。有人选择延迟定义为开始请求和完成该请求直接的时间。

延迟的单位是时间

 

吞吐量:是指单位时间内能够处理的传输量。

计算吞吐量的简单方法:累加一段时间内的传输量,然后再将其除以这段的时间。但这样计算可能会产生正确的结果,也容易误导人,因为它忽略了在样本时间内传输速度的变化。最好是采用:每个采用点相除,然后再累加算平均值。

 

度量网络的延迟

注意这里考虑的是网络延迟,不是应用程序的延迟(应用程序的延迟是指运行在网络服务器上的应用程序本身从开始到返回结果需要花费的时间)。

 

因特网大部分延迟可能是路由器的存储和转发能力决定的。路由器接收一个进入的数据包,并将它放在一个缓冲区里,查看其报头信息,然后决定该数据包下一步将发往何处。即时已经决定发往何处,通常路由器仍然需要等待下一个时隙用户该数据包的发送,于是数据包的延迟在很大程度上取决于Web服务器和用户直接的路由跳数的数目

也就是说,路由跳数的数目(hops)直接决定了网络的延迟

那么利用traceroute功能就可以查到上文提到的hops,也可以使用mtr,mtr是结果和traceroute和ping的功能。

Hops越少约好。

Ping的延迟在50ms左右比较理想,超过100ms就不太理想了。

 

2.1 度量网络延迟和吞吐量

度量延迟和吞吐量最简单的方法是:弄清楚浏览器的高速缓存区的大小和从服务器获得一个特定页面所花的时间。可以使用lynx或者curl命令来获取相关数据。

比如:time lynx -source http://www.51.com/ > /dev/null,这种方法也可以认为是Web性能监控的stopwatch方法。

 

使用FTP

另一个度量网络吞吐量的方法是,利用FTP在本机和某个远程系统之间来回传输文件。但是使用FTP也有个不足,因为传输文件如果涉及到磁盘操作,那么这样做也是不准确的。

取消任何可能FTP传输引起的访问磁盘的请求。

必须利用大文件,因为每次小文件的创建都需要一个磁盘访问。

不过,可以利用某些版本ftp的将结果输出到/dev/null来达成结果。

ftp> get bigfile > /dev/null

 

其实用wget、curl等命令也是一样的,都是基于TCP的传输。但是不能清楚的区分网络性能和服务器性能。

 

以上也可以写成脚本来记录一段时间的运行情况,这样获得的结果会准确。

 

利用率

简单地说,利用率就是实际使用某组件的容量和该组件本身容量的百分比。数学表达式:

利用率 = 

为了充分利用所花的钱,都希望组件的利用率为100%,但是实际上并不必须如此。因为当利用率太高时就会出现很大的延迟。就经验而言,许多组件在利用率约为70%时性能最好。

perfmeter工具为监控系统利用率提供了一种很好的图形界面。

有效性

有效性 = (作为比较组件的一个基本方面是有用的,但在其他方面并没有多大用处,因为它仅仅是由其他两个性能参数相除得的结果)

一种更有用的有效性度量是计算单位开销获得的性能,这通常叫成本效率(cost efficiency)。

优化性能就是增加成本效率的艺术,即充分利用所花的每一分钱。实际上,因特网本身所具有的流行性就说明了这样一个事实。比如:email的延迟吞吐量比传统的邮递要快,成本低。

 

成本效率(cost efficiency)= 单位开销所得的性能

 

使用脚本监控Web性能

面对的庞大的Web数据,如果手动来监控Web性能显然是不可能的,所以这里势必促使我们使用脚本自动来实现,不然perl,python,php,shell等工具。

这里的监控是自动模拟用户登陆的行为,然后记录下各个操作点时间。

通过监控获取日志,然后对日志进行分析,这样就可以得出相关的报表。当然日志也可以保存在数据库里。

 

注意:过渡的监控对Web站点的运行同样有害!

 

 

 

关键性建议

不要太依赖基准,除非这些基准与你实际想做的密切相关。

不仅监控服务器的负载,而且监控实际的Web性能,并作记录。

不要进行过多的监控,否则你将成为制造问题的一份子。

今日“游”

2008.09.30 7:00 下午 »Author: bixuan »

今天去“游”大洋山,时隔10多年没上去过,可能更久,记不清楚了。
现在正值秋收时节,有好多人家正在秋收,听妈说再过一周我们家也开始了,可惜帮不上。

山上已经被开采了,已经失去了儿时的美丽风景,泉水也没有了,有的是多了硫酸厂,希望工人们都健康。
下面几张是在山上拍的。

山上有很多橘树,听舅舅说现在很多橘树都没人承包,随便摘。现在正是早橘收获的时节,我也多吃了几个,喉咙有点痛,哈,上火了。

一路下来,几十年历史的凉亭还在,不过不能说健在了,因为差不多已经成危亭,不知道啥时候能再修。每当农忙时累了,大家都会在里面乘凉休息,我也经常跑里面去“偷懒”,或睡个觉。

很多良田已经变成了珍珠养殖场,多了很多粪便池,一路“飘香”,是给珍珠“老妈”“吃”的。

顺道也去了自家地看了下,稻谷已成熟,该收割了。旁边的菜地也是自家种的,省点菜钱。

这块地原先是爷爷家的,爷爷去世后分给了我爸。听爸说现在种田没钱赚,基本上还是亏的(农药、化肥价格不便宜)。

我家地旁边就是水坝,儿时游泳和钓鱼的首选地,可惜现在污染的不轻。

儿时可是孩子王,村里小孩基本上都喜欢跟我玩,现在大家各奔东西,很少见面。现在回家走在路上很多村里人还会叫我名字打招呼,可惜很多名字我都叫不出来,惭愧。

回来听外婆说表姐生了三胞胎,恭喜她。
我也从外婆口中得知我外甥得了肾结石,SHIT,奶粉害的。
奶奶中风、糖尿病,大小便失禁,打算明天早上去看她。

与上海相比,农村确实少了城市的喧闹,但随着新农村的建设,村里健身设施的安置,村里的老人也经常在那里健身。现在能活个七八十岁已经很不容易了,祝愿他们长命百岁!

妈特地买了只土鸡回来给我补补,哈,先去吃咯…

祝各位朋友节日快乐!

国庆快乐

2008.09.28 10:33 上午 »Author: bixuan »

又到一年的国庆,今天回家看父母老婆..

也祝这里的朋友国庆快乐,顺利安康:)

郁闷

2008.09.27 11:18 下午 »Author: bixuan »

奇怪,现在blog不登陆就不能查看文章了…

赐袍桥

2008.09.27 3:51 下午 »Author: bixuan »

今天下了个google earth查看家乡的位置,结果按照村的名字没查到,结果无意间发现家门口的那座桥居然在地图上有标注,实在惊讶!这座桥名是:赐袍桥,看名字肯定是和一位皇帝有关,这位皇帝是谁呢?哈,不用猜了,是朱元璋,重八兄弟是也。

相传当年重八下金华府视察,路过偶家附近,结果被大雨淋湿,只好到此桥上晒衣服,重八是皇帝,自然身穿龙袍,故此得名,其实,桥上刻的是:献袍桥,此桥现在依然存在,我也偶尔在上面跟村里人聊天。

其实,听老人说,解放初期,村里有八大景观,在当地还是很有名的,后来在文革中被毁,只路留下赐袍桥一景了(现在只作休闲之用)

另:此桥离我家大概是50-100米的距离:)

重生

2008.09.26 10:54 下午 »Author: bixuan »

今天下午1点不小心将表结构损坏了,加上又没有最新的备份, 所以只好重新安装,然后将表一个个更新,终于搞定了~~嘿嘿

大型网站架构体系

2008.09.23 4:20 下午 »Author: bixuan »

比较完善的架构更多看:http://www.blogjava.net/wangwy/archive/2008/09/23/230602.html

架构

不能实现非HTTP协议代理怎么办?

2008.09.11 4:17 下午 »Author: bixuan »

可以使用iptables包转发!!嘿嘿~~

世上到处都是有才华的穷人:《没有人不可替代》

2008.09.10 11:06 下午 »Author: bixuan »

你在公司里的地位就像地铁里的座位一样,只要一离开,马上就会有递补上来。
远远供大于求的社会,生存的严峻性比以往任何时候都紧迫。
世界上到处都是有才华的穷人,没有人不可替代。
物竞天择,适者生存,切莫得过且过。没有危机意识,只能被淘汰。不要自心为是、不要盲目乐观、不要自欺欺人。需要提高能力、需要胜任岗位、需要危机意识。珍惜当下拥的机会,拒绝职场恶习,提高胜任力。提升我们的价值,改变我们的命运。

推荐大家看看:《没有人不可替代》

相信数字,但更要相信眼睛

2008.09.09 6:44 下午 »Author: bixuan »

需求的变化以及新技术的发展日新月异,所以你无法确切知道一两年后你到底需要什么。一种比较好的办法是:选择一些灵活性大的、能扩展的、有足够容量的的设备,将他们集成在一起(所以这里又涉及到一个可扩展、灵活性大的架构。按下不表以后再说),当需要修改数据或者选择新设备时,你能方便地增加容量和改变系统架构。建议你选择与其他制造商的产品“相处融洽”的组件,这种方法的好处在于随后能不断反馈给你关于性能和交互设备的可靠性方面的信息。

 

不要过于相信厂家的规范书和广告宣传,它们没有第一手经验或者来自朋友的信息可靠。更让人震惊的是,有些厂商会伪造相关标准和测试结果。所以在建立系统时,就应该预料到系统的性能情况,这样有助于检验、分析模型和现实之间的差距。

 

请记住:组件的额定值是产品供应商能鼓吹的最大值,最理想情况下产生的值,这些并非你在实际中所使用的值。而且很多产品在使用一年后就会出现莫名其妙的硬件问题。

 

必须注意的是:当在吞吐量很高的时候进行测试时,应该确保延迟在一定范围之内;同时还

要注意,当延迟确实升上去时到底有什么事情会发生。许多应用程序对延迟很敏感,他们不会等待太长时间。所以这里需要特别注意:吞吐量和延迟的关系,在测试的时候必须有这样的数学模型。