浏览模式: 标准 | 列表全部文章

生活启示录

不是那么忙很久了,这段时间一直在忙和间歇着在忙着一些事情,主题思想当然是不变的,就是我的测试和性能主题,而中间穿插的一些小故事,也颇有些意思。下面容我一一道来。

------------------啥都别信,信自己----------------

和CSDN的一blog排名前100的哥们合作,做一个关于他们在客户现场的问题重现。冀大伯说了,你就问他要啊,要客户现场一模一样的东西啊,没有搞个毛啊,怎么重现啊。从知道他能被loop到这个项目中,就开始了艰苦的拉锯战。

那个啥,把这个客户的现场环境和我说一下吧。

你问小C,他知道的。

无法重现。

小C的无法重现啊,你确定他的是最新的么?

哦,对不起,你看看这个。

无法重现。

哥们,你确定你给的是最新的么?

走,去你那看看。

哎呀,不是,我们又在客户机器上改过。

我帮你改改。

无法重现。

我处在要抓狂的阶段,再次发问:

哥们,你真记不得客户现场的东西了,能问客户要么?

他们很忙的,东西也在他们机器上,不知道还有没有,我试试看。

半天过去了。

哥们,要了么?

我刚在开会,我一会就要。

半天过去了。

哥们,要了么?

客户在开会,说是一会找找。

半天过去了。

哥们,到底怎么样了?

客户找到了,比较大,客户压缩了就发给我们。

到此告一段落。

------------------------------------------------------------

此爷不做评价,牛人自有牛人磨,我可磨不过。

--------------------西游记的裁员理论------------------

我是知道的,裁谁都成,就不能裁白龙马。

那官家子弟也是你等肉眼凡胎所能撼动的?

再说了,沙和尚就一负责卷帘子的童子,只不过长的粗旷了点,再说给天庭上班,也没规定男士胡子必须梳整齐,长发必须束起来。所以呢,这个童子也就长得个性了点,再说了,这么个性一哥们,给王母那附近显示着他的雄性激素发达呢,不是找K嘛。

中层领导报裁员,没有把沙和尚给报上去。也就是说,玉帝的家丑是可以对着天庭公布的咯,就这么一可能勾引主母的人,还要成佛成仙咯。

这还了得,玉帝还得势呢,先把这批中层换了先。

所以裁员啊,他还就得裁沙僧。

不用分析项目管理理论,纯的字面人缘分析,沙和尚就是那新鲜待炒的八爪鱼。

--------------------------------------------------------

别分析这分析那忘了传说中上下五千年的根本。他不是儒雅,不是谦让,而是阶级,而是斗争。

------------------------遇见未知的自己-------------

听了刘董分析了2个案例,解决了一些问题。

发现,他和张得芬师从同一个老师。

也就是说大刘说的那些理论怎么这么浅显易懂了。

其实我一直在学习。

全责心很重要。

 

天堂没有书来书往

02年的时候,大学伊始,泡一个叫做风格的论坛,和一群70后的人搅和到一起。放肆的点评一些文字,维护着一个叫做随心心语的板块。

那时候,我只知道文婷姐是总版主,文字细腻,有着无法言传的哀伤。

后来灌水的时候,我就吵着要结拜姐弟,记得还有苏赛,文婷是老大,我是二哥,苏赛是三妹。

后来听说是一些矛盾,文婷姐就离开了论坛,偶尔回来和我们灌灌水。

在后来,因为一个诡异的事件,我被论坛除名。然后离开。嗯,是在03年。

有文婷姐的msn,看着它亮起来,忙碌,离开,灰掉。就这样安静的看着,也不知道说什么,开始的时候还偶尔寒暄,后来,寒暄也取消了,只是看着亮起来,忙碌,离开,灰掉,如此循环。

我离开了之前的圈子,或者说,我甚至从没有加入这个圈子。

我一直号称自己是学文的,写程序只是因为写文字无法养活自己,我知道,这些都是p话,因为我写文字根本卖不出价来。而我,也不愿意这样兜售自己本不昂贵的智力。我没有好的构思,没有好的文采,只有狗屁不通的话语,还好不通,彻底的断绝了我依靠中文文字吃饭的念想。

虽然我现在靠着是拼音字母和数字,我可不需要兜售自己的智力,我只要能把它们放到一起,能让他们运行就成。根本不用推敲 清风明月抓我心,或是清风明月挠我心。

就这样,我从一个城市飘荡到另外一个城市,从一个项目飘零到另外一个项目,周而复始。有一句话如是说,好的项目都是相同的,不好的项目各有各的不好。

如此这般,我和文婷,苏赛断了联系。而我又从不是一个主动联系朋友的人。去年在济南,和淄博的大叔联系,都忙的不可开交,于是也没有联系。事实上,他是我在风格出来了之后联系的第一个人。

和大叔也没能成功的见面吃饭喝酒扯淡,总是各有各忙,最后错过机会,留下遗憾。

大叔给我qq留言说:

你这个混蛋,你文婷姐走了,你为什么不告诉我。是你不知道,还是怎么回事

我这个混蛋,看到这条留言,蒙了好几分钟。

我马上google文婷,颇具讽刺的是,在6年前,我google是确认她活着的精彩,而6年后的今年,我google的是她死后的无奈。

连死都不怕,还有什么熬不过去的么?我脑筋短路了好几分钟。

连活下来的勇气都有,那还有什么克服不了的困难呢?我想不太明白。

30岁前拿命换钱,30岁后拿钱换命,一直是IT人士流传的一句佳话,原来,还有很多行业是如此的。我们又站到了同一起跑线上,命运的枪已经激发了,于是大家猛跑。

此去漫漫,天堂没有书来书往,文婷姐,一路走好。

Tags: 文婷姐, 大叔, 风格论坛

linux,eos,weblogic,性能测试

自己机器的wiki已经完成了架设的过程,并已经启用了,我会把自己的工作过程和遇到的问题作为tip记录下来,积累和提高。


---------------eos for weblogic的默认安装-----------------

访问console,默认的用户名/密码为  system/eosversion

--------------强制杀进程-------------

kill -9 pid

--------------too many open file 文件句柄超出-------------

在使用linux服务器做web应用服务器时,linux默认的对外file连接数量为1024. 也就是说,如果做压力测试的话(偶就是搞这个的),一定需要修改对外的tcp链接数量。

一般这种错误,对应的是日志中的too money open file.

在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:

lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more 在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:

# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more

131 24204   
   57 24244   
   57 24231   
   56 24264

其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。

ps -aef|grep 24204 即可查看对应的进程。

但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:

ulimit -HSn 4096 以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改 /etc/profile 把上面命令加到最后。

当然,也不建议过多,会对资源有所损耗。 由于我是上的300虚拟用户,我直接给当前连接窗口给开到了10240。

----------------------远程连接相关----------------

用 nohup ./startServer.sh启动服务,可以断掉链接,服务存在。

----------------load runner相关设置--------------

巧用参数生成123456000000到123456150000的编号。设定如下:

大小: 44.35 K
尺寸: 400 x 356
浏览: 24 次
点击打开新窗口浏览全图

图中的100对应着我的100 vuser的并发。这样设置的意思,到最后就能100并发,生成123456000000到123456150000并且不重复。

-----------------web service压力测试注意------------------

听GZ说起,一个注意点。

获取连接的时候,应该把获取连接的方法提取到静态方法中,不能每次动态获取连接。

不然压力上去,性能就下来了,做个笔记。

---------------------------------------------------------

破解的8.1,100 vuser,一个controller能管理多个clinent,但是并发用户总数还是不能超过100,还需要手工合并压测数据,真晕。

Tags: linux, eos, weblogic, 性能测试, loadrunner

要比跳蚤聪明--关于自我设限的联想

有这么一个关于跳蚤的故事:

---------------------------------------------------------------------

曾经有人做过这样的一个实验:把几只跳蚤放在密封的玻璃瓶子里,在最初的时候,跳蚤试图逃出去,每次都跳的很高,但每次都要撞到瓶盖。
在几次失败碰壁之后,为了不至于撞疼脑袋,跳蚤开始调整策略,虽然它仍旧在跳,但是跳跃高度已经不足以触及瓶盖。
这个时候,即使你把瓶盖打开,他也不会跳出瓶外去,因为它已经把自己的跳跃范围限制在自己所设定的范围内。其实他只要稍微跳高一点,就可以自由,但是他没有。

-----------------------------------------------------------------------

第一次听到自我设限的这个名词,来源于DLHUNTER的说法。听说来源于另外一个人,具体就不再深究。今天打完了羽毛球,和同事走路回家,第一次见面的同事,虽然我们同在一个公司好几年。我和他不停的说话,分析公司,分析公司的部门,分析房价。我不喜欢冷场。呵呵,可能说的有点多,他和我说,他觉得我应该去做销售。我笑问,为什么?他说,直觉如此。我问,为什么你不能去做呢?他说,我偏内向,只能在公司研发部门呆着。我突然想到DLHUNTE给我提起的自我设限,是这样的么?

做销售,为什么你不能去做销售?是我自己自我设限,是搞技术的,不能去搞销售的事情,还是什么其他的呢?我一直在想为这个问题找到答案。特别是最近有空来想这些问题的时候。

为什么不能去做销售?难道头上顶着好几个透明的玻璃瓶盖么?

我从ps,换部门到rd性能组。我相信这就是我的一次对自我设限的挑战。在做项目最迷茫的时候,我一直不停的在问自己一个问题。除了做项目,开发,管理项目,你还能做什么?是不是一辈子就是做项目的命?

如果有一天,ps没有项目可做了,你去做什么?还是会失业么?做项目总是个很失落的过程。比如,在上一个项目的过程中,需求变更的问题,到了下一个项目,这些问题依然出现?难道我就不能去解决这些问题?我也尝试着去解决,去沟通这些问题,想彻底根除这些问题,在保证客户满意度的前提下,去除这些问题,很难,或者说,不可能。

我对这次部门的转换叫做华丽的转身。开发了一年的项目,带了一年的项目,我相信,就做项目方面,我还是能做一些事情出来的。那么,难道我的命运就是如此?一辈子的和人扯皮?肯定不能这样。那么我就去做些有积累的事情。

于是我就转换到了性能组,就这么简单。如果这次华丽的能转身成功,我相信,总有一天,我会变成一个商人的,不管是不是软件行业的销售,我有足够的冲劲和能力来做这个事情。

分析上面的一段话,有三个玻璃盖:

  1. 在ps一定要做项目么?
  2. 在保证客户满意度的前提下,真不能解决需求变更的问题么?
  3. 这次的华丽转身关后面的计划什么事情呢?

对应的问题:

难道呆在ps一定要做项目?还有咨询啊,售前啊,架构啊,能做的事情多呢。是自己能力不够或者经验不够才做这些事情做的少。努力的蹦跶一下,落在瓶外了,你就能去做其他的事情,就是如此简单。

当自己觉得沟通的够了,应该离真正的沟通够了差很多,不可辩驳的是,ps所参与的绝大多数项目都是有特殊性的,比如一般是销售由于工期的原因才送你们到一线。销售希望你拼命干活,给他多创造利润,这是作为剥削阶层的最终目的,既然他要利用我挣钱,我为什么不能把这个关于需求变更的问题抛给他去处理?

其实不管此次转身能不能成功,后面的计划还是要执行,走一步看一步是正常的做法,但是最主要的是,大的计划不能改变,如此。

其实跳蚤不可悲,因为他已经尝试过很多次。

如果不去尝试,就算一直在瓶子里面蹦咋,也不会很开心。

我想说的是,合适和不合适是一个方面,为什么不尝试呢?折腾有理,折腾无罪,折腾万岁。

---------------------------------------------------------------------

写的有点乱七八糟,自我设限真的是很恐怖的东西,等偶战胜他了,再来写清楚点的文字。

Tags: 跳蚤, 自我设限

性能测试培训--周末--段念

---------------------性能测试培训--------------------

惦记了一个多星期的为期2天的培训结束。培训讲师是段念,一个工作11年的小伙。对于性能测试,写就一本《软件性能测试过程详解与案例剖析》,参与了Google API大全——编程·开发·实例》,对于此次培训,我倒还真是有了一些认识。工具这种东西,只要你去用,去摸索,怎么着都能学会。有一些思路,思想,还有一些经验的分享,也估计只能花钱去买咯。

做些笔记:

1)需求决定性能好坏。

举例说明:一个报税系统,需要填写2个多小时的数据,然后报送的时候需要12分钟,性能是好是坏?

客户反馈:性能不错,能接受。

思考:开始的时候忒不能理解,12分钟在等待计算机响应,是不是太恐怖了点。后来发现,有个前提,需要填写2个多小时的数据。报送12分钟。来平均一下我们的数据,2个多小时,算2个小时。也就是1个小时要对应6分钟提报时间。再次拆分,10分钟对应的是1分钟报送时间。再次拆分也就是10秒的填写,对应1秒的报送时间。那我们在模拟一下系统的用户,填写30秒,等待3秒。嘿,按照258理论。这个完全还是可以接受的。所以结论是性能还不错。

换句话来说,做性能也是为了客户而做,客户都满意了,自己何必再吹毛求疵?

2)响应时间

响应时间分为两段:a)服务器响应时间    b)客户端响应时间

在目前我们所面对的大部分的应用中,以web应用为主。客户所感觉到的时间为:网络传输时间+服务器响应时间+客户端响应时间。目前的多ajax应用中,客户端响应时间反而成为了一个不确定的因素。

3)虚拟并发的估算

一般系统为同时在线的10-20%之间。

在选定的时间段,用户行为基本稳定,有相对固定的行为模型。业务并发数用于模拟用户的真实负载情况。这是一个时间段的概念,具有业务意义,体现的是用户的视角;而服务端的并发数表明软件在同一时刻受到的用户请求,这是一个时间切片的概念,体现的是应用本身的压力,一般用于查找并发引起的问题,比如死锁,内存溢出等所用的概念。利用正态分布来计算并发峰值。

4)性能诊断过程

大胆设想,小心求证。

举例:医生看病,比如一个人发烧来到医院,说自己发烧,让医生给诊断,医生也不知道是怎么回事啊,就把常见的发烧病因列举一下,然后在一一检查,最后定位出来。

同样,做性能测试和分析也是如此,要能知道大概是怎么回事,才能定位出来问题。

用福尔摩斯话结尾:One should always look for a possible alternative and provide against it. It is the first rule of criminal investigation。

你必须寻找各种可能解释事情的方法,然后想办法看看能否试图推翻它。 其实就算是让你看到内存分布有能如何呢?

性能测试和调优也莫过如此。

5)短板效应

一个系统能承受多少压力,不是取决于服务器的配置什么性能最优,而是服务器的最弱的那块硬件性能。

举例:人大学生选课系统,2台数据库服务器,负载均衡。由于2台服务器的硬件配置不一致,一台CPU一直保持在100%,而一台CPU一直就没上过50%。这时候,那台一直100%的就会导致压力脚本运行失败。变成了整个系统的短板。

6)测试分类

  1. 性能测试。(performance testing)
  2. 负载测试。(load testing)
  3. 压力测试。(stress testing)
  4. 配置测试。(configuration testing)
  5. 并发测试。(concurrence testing)
  6. 容量测试。(volume testing)
  7. 可靠性测试。(reliability testing)
  8. 失败测试。(failure testing)

明确目的,才能做好测试。

7)响应时间和并发数的关系

由线性转为非线性。

举例:理发店举例。

一个理发店4个理发师,理发一次需要30分钟,来小于等于5个人的响应时间都为30分钟。等来了8个人,平均响应时间就是一个小时。如果来的人越来越多,时间的变化曲线应为抛物线型。

8)从需求中获取和性能相关的指标

  1. 在约定的时间内完成的业务数量。
  2. 和时间相关描述
  3. 和速度相关描述

关于性能的需求,2个盲点:a)二义性。b)不可测试性。碰到这种问题,需迭代回需求状态,确认需求。

9)确定目标确定的风险考虑

似乎所有的和风险相关的事情,都会有以下2种。

  1. 严重性。
  2. 可能性。

举例:车祸,不做赘述。

--------------------------------TIPS---------------------------

1)测试数据分为负载数据,探测数据。

2)时间戳的使用需配合ntp协议做测试服务器和客户端的时间同步

3)开源用的最多的测试工具 jmeter。

4)http1.1协议规定不能同时发起超过2个的请求。js需单独占用线程下载。

5)loadrunner的使用中,如果是web页面ajax的应用较多,录制脚本请选用url的选项进行录制。

6)在脚本中,如果值能确定,请用参数。如果值不能确定,需从服务器上获取,用关联。

9)fiddler,调试工具,可模拟http请求。

10)用loadrunner监视器他的机器,如果是*nix系列的机器,必须要保证rstatd的进程在运行才能进行监视。

11)页面缓存,用版本来指定文件夹存放静态需缓存数据,可以把静态时间设置比较长。来源于http头的 expired来设置。

12)firefox的插件yslow,firebug的使用。

13)推荐网站:www.testingreflections.com

课后扯淡:最怕领导说要加入项目组了,加入一个(人)死一个(项目),深以为然。比如第一个报税的举例,自己人能把自己人掐死。

----------------------dokuwiki-----------------------

见到了上次性能测试这一块的一哥们,用dokuwiki在本地跑着,记录了他的工作过程,也方便查找,我决定学习了。

Tags: 性能测试, 段念, loadrunner