淘宝商城(天猫)高级技术专家.3年研发+3年性能测试调优/系统测试+4年团队管理与测试架构、研发系统实践. 新舞台新气象, 深化测试基础架构及研发架构,希望能在某个技术领域成为真正的技术大牛。欢迎荐才http://bbs.51testing.com/viewthread.php?tid=120496&extra=&page=1 .邮件: jianzhao.liangjz@alibaba-inc.com,MSN:liangjianzhao@163.com.微博:http://t.sina.com.cn/1674816524

发布新日志

  • [论坛] 请问有vbscript 和qtp profiler 的工具么

    2008-03-12 20:51:55

    我们知道c或者java 分别由  gprof,purify 工具。

    有vbscript 和qtp 代码profiler 的工具么?  以便我们更清晰地优化代码 
  • mysql+solaris 上的性能诊断过程

    2008-03-11 22:06:46

  • [论坛] 在电信时写的脚本编写的一些基本要求

    2008-03-11 21:57:25

    脚本能有效模拟用户行为,是产生系统压力的关键。脚本关键要求是可迭代、并发运行,更详细要求至少包含:

    (1)需要度量用户等待的步骤,应加入事务(transaction)

    (2)事务命名:用例名_步骤名

    (3)需要用户输入的地方,必要时加入参数化(parameter)。一般为一个VUSER准备4条以上的数据

    (4)加入必要的校验点( checkpoint)

    (5)若后一步骤的输入依赖于前面步骤的输出,应该建立关联(colleration)

    (6)脚本行为与用户行为一致,与文档操作步骤一致

    (7)最好选取数据适中的区域,若不确信,请选取数据集中的区域

    (8)动态变更的数据若不能通过用户输入或者服务器返回获取,请变更流程适应测试。如随机动态图片上的校验码。

        为了最大程度复用脚本,请严格依照以上步骤执行。同时,我们在获取脚本后,会增加进一步的验证点。

        另外,请在评测中心校验或者开发脚本期间,派熟悉涉及模块的程序员到现场技术支持。







    检查点一般

    (1)安装 ethreal截获网络包,对比loadrunner录制的数据流

        确保不遗漏压力。



    (2) insert/update/delete 业务回放脚本,然后通过应用界面检查或者通过sql查询。

       对于查询类,可以在服务器安装tcpdump 截获client网络包,检查sql



    (3)询问业务错误的特征码,在脚本中注册错误码



    (4) 检查参数化属性是否符合业务需求



    (5)回放脚本,最好把extend log打开,观察有无error,mismatch

    或者 http 1.1 500/400等关键词
  • loadrunner缺陷

    2008-03-11 21:43:54

  • google测试初探

    2008-03-11 12:52:01

  • [论坛] 性能测试讨论专题

    2008-03-01 00:37:21

    也蛮有些时间了。


    一    生产系统性能吞吐率的准确度

             部分网站有XX部门采集PV 数据,但这个PV与我们更关心的业务吞吐率不完全Match, 而且由于apache  mod_rewrite 作了URL改写,给我们分析网站业务吞吐率带来很大困难


    二   测试环境硬件与生产系统相差甚远,测试结果给生产环境的参考意义存疑

            数据库硬件差异最明显,生产环境多采用ibm  p 系列小型机, 而测试环境 数据库多为PC Server。 有时本想测试部署在jboss上的应用性能,但数据库先到达了瓶颈,无法带来有效压力  

          另外,比较突出的一些差异:集群、 专用邮件服务器、图片服务器, 这一部分测试环境也很难模拟。

    三   测试系统与生产系统数据量级差异,给整体性能带来很大的影响

                  同样由于硬件缘故或者由于数据保密缘故。  这个影响在多个系统得到验证

    四    如何快速进行系统调优


           面对众多框架、组件,以及复杂的业务应用。 如何在有限的时间内漂亮地将系统性能调整到一个能接受的范畴,需要协调多方资源。
  • [论坛] 某季度性能测试REVIEW,希望能给TEAM LEADER一些帮助

    2008-03-01 00:31:38

    蛮有些时间的一个小结,希望能给team leader一个启发


    1 小组

       积极引导组员了解性能测试比较好的一些理念,交流性能测试中的经验与教训,明确每个组员下一个阶段需要完成的性能测试任务。
       XX在第XX季度得到较多的性能测试项目锻炼,进步明显。
      
    2 性能测试项目

             支持XX系统性能测试,挖掘包括数据转换错误、空指针错误以及内存泄露、连接池耗尽、操作系统inode节点满等多个深层次的异常。 同时给一些同事锻炼性能测试脚本锻炼的机会。

             与XX 一起做XX集群性能测试与容量规划性能测试,充分挖掘分布式计算特性,借用容量规划理论以及扩展loadrunner的 监控Linux能力。这也是XX系统做得最深的一次性能测试,也是容量规划的一个尝试。         

           支持XX等开展性能测试, review 大部份性能测试报告。      
          同时积极积累实战知识并文档化。
  • 近期面试测试应聘者的一些感想

    2008-02-29 23:28:39

     

     

      论坛的帖子点击率比BLOG高出很多,呵呵,为了便于索引,这里提交一个URL

      http://bbs.51testing.com/thread-107304-1-1.html

      等某天BLOG 被更多人熟知,说不定我会反过来。哈

  • 搜索引擎测试的难点

    2008-02-27 00:05:37

     

    http://www.51testing.com/?170805/action_viewspace_itemid_75498.html

    这个也是俺100%原创的。

    作搜索引擎也有1.5 年长了,积累了一些体会,但相对总结提炼的少,比较遗憾

     

     

     

  • N年前电信性能测试实践的PPT

    2008-02-26 22:43:55

     

    初到alibaba,简单总结电信工作时的性能测试过程。望大家喜欢

    这个地方还无法上传PPT。

    那只有委屈各位移步: http://bbs.51testing.com/viewthread.php?tid=106834&extra=page%3D1&frombbs=1

  • [论坛] 俺也把初到alibaba的性能测试PPT发出来,免得发霉了:)

    2008-02-26 22:39:16

    rt。

    呵呵,应该无机密的内容在里面。

    PPT 是我在电信性能测试的一个小结。

    有问题请联系我

    性能测试实践.ppt
    (2008-02-26 22:39:16, Size: 298 kB, Downloads: 5246)

  • 一次 linux +apache + apache module 性能诊断以及调优过程

    2008-02-25 22:46:28

    一次    linux +apache + apache module 性能诊断以及调优过程

     

    第1章           系统架构 linux +apache + apache module 程序。

     

    第2章          具体的os 以及apache 信息

    [admin@test1 logs]$ uname  -a

    Linux test1 2.6.9-42.ELsmp #1 SMP Wed Jul 12 23:32:02 EDT 2006 x86_64 x86_64 x86_64 GNU/Linux

    [admin@test1 logs]$ /usr/local/apache2/bin/httpd  -l

    Compiled in modules:

      core.c

      mod_authn_file.c

      mod_authn_default.c

      mod_authz_host.c

      mod_authz_groupfile.c

      mod_authz_user.c

      mod_authz_default.c

      mod_auth_basic.c

      mod_include.c

      mod_filter.c

      mod_log_config.c

      mod_env.c

      mod_setenvif.c

      worker.c

      http_core.c

      mod_mime.c

      mod_status.c

      mod_autoindex.c

      mod_asis.c

      mod_cgid.c

      mod_negotiation.c

      mod_dir.c

      mod_actions.c

      mod_userdir.c

      mod_alias.c

      mod_so.c

    [admin@test1 logs]$ /usr/local/apache2/bin/httpd  -v

    Server version: Apache/2.2.6 (Unix)

    Server built:   Jan 31 2008 20:42:34

     

    第3章           性能场景设置

    36 vuser pacing: 0.25秒。 期望tps 140 /秒。

     

    第4章           调优之前

        httpd.conf为:

    <IfModule worker.c>

    StartServers        2

    ServerLimit         2

    MaxClients          20

    MinSpareThreads     10

    MaxSpareThreads     20

    ThreadsPerChild     10

    MaxRequestsPerChild  0

    </IfModule>

     

    性能测试结果如下:

     

     

     

     

     

     

     

     

    第5章           性能分析

    响应时间不满足性能需求。

     

    加入apache module 分析apache,接收到http接收到请求+处理+发送网络包的时间为:

     

    10.0.4.132 - - [21/Feb/2008:17:18:13 +0800] "GET /bin/search?news_gb?nk=Y&_PS=pt&_SS=id&n=1&series_id=59197&_id=1001028515 HTTP/1.1" 200 1547 "cost 0 ms"

    10.0.4.132 - - [21/Feb/2008:17:18:13 +0800] "GET /bin/search?news_gb?parents=3000103,&_PS=pt&n=5&q=tags%3A%22%C5%AE%CA%BD%B8%DF%D1%A5%22+&O=and&news_type=8,9,10,11,12,13,14,15&_id=1001292049 HTTP/1.1" 200 5162 "cost 2 ms"

    10.0.4.132 - - [21/Feb/2008:17:18:13 +0800] "GET /bin/search?news_gb?_PS=pt&s=4&n=6&q=tags%3A%22%B7%FE%D7%B0%B3%B1%C1%F7%22+&O=and&news_type=8,9,10,11,12,13,14,15 HTTP/1.1" 200 49647 "cost 6 ms"

    从上述看,apache 接到http 请求后的处理速度很快。

    另外,分析IO( si/so ) 、网络 (300Kbytes) CPU都不是特别高。

    [admin@test1 logs]$ vmstat 2  10

    procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

     r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa

     0  0  17936 2320460   9680 2086580    0    5    54    59   27    14  2  1 96  1

     0  1  17936 2323468   9680 2088280    0    0   806     0 9948  1172 47 10 27 15

     2  2  17936 2321356   9680 2088960    0    0   314     0 8780  1023 36  8 48  8

     5  0  17936 2318348   9688 2090380    0    0   670   118 6669  1051 37  6 43 14

     3  0  17936 2285324   9688 2091876    0    0   754     0 11847  1405 37 12 35 16

     1  1  17936 2287260   9696 2092820    0    0   458   116 12115  1400 40 13 38  9

     0  1  17936 2298588   9696 2093160    0    0   140     0 8620   856 37  8 52  4

     0  2  17936 2300572   9696 2094928    0    0   872     0 8497  1145 34 12 41 12

     

    [admin@test1 logs]$ sar  -n  DEV 2  10

    Linux 2.6.9-42.ELsmp (test1)    02/21/2008

     

    05:27:20 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s

    05:27:22 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

    05:27:22 PM      eth0   2984.34   5652.02 182552.02 8365743.94      0.00      0.00      0.00

    05:27:22 PM    veth31      3.03      2.02    783.84    133.33      0.00      0.00      0.00

    05:27:22 PM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

     

    05:27:22 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s

    05:27:24 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

    05:27:24 PM      eth0   1989.05   3622.89 134824.38 5310582.09      0.00      0.00      0.00

    05:27:24 PM    veth31      5.47      2.49   4040.30   1696.52      0.00      0.00      0.00

    05:27:24 PM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

     

    05:27:24 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s

    05:27:26 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

    05:27:26 PM      eth0   2207.46   4199.00 145106.97 6175783.08      0.00      0.00      0.00

    05:27:26 PM    veth31      5.97      3.98   1314.43   1018.41      0.00      0.00      0.00

    05:27:26 PM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

     

     

    由于loadrunner 设置36个并发。而httpd.conf MaxClients          20

    36 20 ( 线程),造成loadrunner 并发排队。

    诊断为并发数过高而httpd.conf 配置不当,导致apache httpd 线程阻塞,造成等待队列过长。

     

    第6章           调优

    程序不变。增加Maxclients

     

    更改httpd.conf 为:

    <IfModule worker.c>

    StartServers        2

    ServerLimit         2

    MaxClients          40

    MinSpareThreads     10

    MaxSpareThreads     20

    ThreadsPerChild     20

    MaxRequestsPerChild  0

    </IfModule>

     

    LoadModule responseCost_module /usr/local/apache2/modules/mod_responseCost.so

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{responseCost}n\"" common

     

    性能表现如下,可见吞吐率都大幅度提升,响应时间下降。

     

     

     

     

     

    如果是prefork 编译,则httpd.conf采用

    <IfModule prefork.c>

    ServerLimit         40

    StartServers         5

    MinSpareServers      5

    查看(853) 评论(1) 收藏 分享 管理

  • 非线程安全函数使用导致BUG

    2008-02-22 00:24:21

    经典的 UNIX编程书籍专门一章提到非线程安全函数(不可重入)。一般情况下,这个问题不好爆发,但是高并发程序引爆这个问题。

     

    开发人员有时也会犯晕的。

     

    例如:

     

     

    void log(int level, char *file, int line, const char *function, char *fmt, ...)
    {
     
    if (level>g_nLogLevel) return
    ;

     
    char buffer
    [1024];
     
    time_t t
    ;
     
    time(&t
    );
     
    struct tm *tm = ::localtime((const time_t*)&t
    );


    其中的localtime是非线程安全

    应该更改为 localtime_r

     

     

  • IBM RPM项目管理系统性能测试脚本

    2008-02-20 23:08:35

    IBM RPM系统是WEB之上包装的非文本方式传输数据的系统。

     

    为了开展性能测试,如何构造有效的网络包成为第一个坎。用YATT 嗅探器截获之前的通信包,保存为req.log。

     

     然后借用JAVA 里面HttpURLConnection 发送、接收数据,经测试通过。

     

     

    import java.io.*;

    import java.net.HttpURLConnection;

    import java.util.Map;

    import java.net.URL;

    import java.util.zip.Deflater;

    import java.util.zip.Inflater;

     

    public class RpmSender {

          public static void main(String[] args) {

                 try {

     

                        String log_dir = "D:\\rpm\\record2\\";

                        int  bufferlen =20480;

                         URL url = new                  URL("http://rpm.alibaba-inc.com:9080/webapp/IBMRPM/PMOServlet.wss");

                        //URL url = new URL("http://10.0.32.123:8081/IBMRPM/PMOServlet.wss");

                        OutputStream ōut = null;

                        InputStream is = null;

                        HttpURLConnection httpConnection = null;

                        for (int i = 1; i <= 16; i++) {

                               httpConnection = (HttpURLConnection) url

                                             .openConnection();

     

                               httpConnection.setRequestProperty("Content-Type",

                                             "application/octet-stream");

                               httpConnection.setRequestProperty("Accept", "text/html, */*");

                               httpConnection.setRequestProperty("Pragma", "no-cache");

                               httpConnection.setRequestProperty("Keep-Alive", "Y");

                               httpConnection.setRequestProperty("Accept-Encoding",

                                             "deflate, identity");

                               httpConnection.setRequestProperty("Zip", "D");

                               httpConnection.setRequestProperty("User-Agent", "IBMRPM");

                               httpConnection.setRequestProperty("Method", "POST");

     

                               httpConnection.setDoInput(true);

                               httpConnection.setDoOutput(true);

     

                               out = new BufferedOutputStream(httpConnection.getOutputStream());

     

                               String reqfile = i + "_req.log";

                               String resultfile = "result_" + i + "_reponse.log";

                               FileInputStream fstream = new FileInputStream(log_dir + reqfile);

                               String charset = "UTF-8"; //GBK,ISO-8859-1,GB2312,UTF-8

                               byte[] ōutput = new byte[bufferlen];

                               int readbyte = fstream.read(output);

                               System.out.println(readbyte);

                               //httpConnection.setRequestProperty("Content-Length",new

                               // Integer(readbyte).toString() );

     

                               out.write(output, 0, readbyte);

                               out.flush();

     

                               byte[] buffer = new byte[bufferlen * 3];

                               byte[] tmp = new byte[bufferlen];

                               int length;

                               int total_len = 0;

     

                               is = httpConnection.getInputStream();

                               while ((length = is.read(tmp)) > -1) {

                                      System.arraycopy(tmp, 0, buffer, total_len, length);

                                      total_len += length;

                               }

                               System.out.println(total_len);

                               Inflater decompresser = new Inflater();

     

                               decompresser.setInput(buffer, 0, total_len);

                               byte[] result = new byte[4096];

     

                               int resultLength = decompresser.inflate(result);

                               decompresser.end();

                               FileOutputStream fout = new FileOutputStream(log_dir

                                             + resultfile);

                               fout.write(result, 0, resultLength);

                               fout.close();

                               // Decode the bytes into a String

                               // String ōutputString = new String(result);

                               String ōutputString = new String(result, 0, resultLength,

                                             charset); //"UTF-8");

                               System.out.println(outputString);

                               out.close();

                               is.close();

                               httpConnection.disconnect();

                        }

                       

     

                 } catch (Exception e) {

                        e.printStackTrace();

                 }

     

          }

    }

     

  • No space left on device 但硬盘空间未满的解决办法

    2008-02-20 23:01:08

     

    WARN  internal.ParameterParserImpl - Upload failed
    com.alibaba.service.upload.UploadException: Processing of multipart/form-data request failed. /tmp/upload_64f22eb1_113e12038a1__7fe6_00000000.tmp
    (No space left on device)
            at com.alibaba.service.upload.DefaultUploadService.parseRequest(DefaultUploadService.java:170)
            at com.alibaba.webx.request.context.parser.internal.ParameterParserImpl.parseUpload(P

     

    df  -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda2             4.9G  2.2G  2.4G  48% /
    /dev/sda1              99M   12M   83M  12% /boot
    none                  2.0G     0  2.0G   0% /dev/shm
    /dev/sda7             119G   45G   69G  40% /home
    /dev/sda3             4.9G  3.9G  685M  86% /usr
    /dev/sda5             2.9G  138M  2.6G   5% /var

     

    [admin@b2bsearch211 logs]$ df  -i

    Filesystem            Inodes   IUsed   IFree IUse% Mounted on

    /dev/sda2             640000  640000       0  100% /

    /dev/sda1              26104      38   26066    1% /boot

    none                  218174       1  218173    1% /dev/shm

    /dev/sda7            15826944  147888 15679056    1% /home

    /dev/sda3             640000  147367  492633   24% /usr

    /dev/sda5             384000    3210  380790    1% /var

      df -i 可以看到Inode节点已经满了。

      通过删除大量的小文件得以解决。

      更多参考

    http://linux.chinaunix.net/bbs/viewthread.php?tid=676237

     

      

     

  • HAT -- The Java Heap Analysis Tool

    2008-02-20 22:58:38

    HAT是有力的JAVA分析工具。具体

    参考文档  https://hat.dev.java.net/doc/README.html

     

     

    在jvm option加入参数先作thread dump,再用hat 分析结果

     

    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/admin/work/intl-myalibaba/deploy/heap.dump

     

    启动服务

    java -Xms2048m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=64m -XX:MaxPermSize=64m -jar ./hat.jar heap.hprof

     

    ie浏览器察看

    http://localhost:7002/

     

     

  • 上传图片的2种脚本

    2008-02-20 22:56:28

     

    系统一HTML:

     

    <form action="" method="post" enctype="multipart/form-data">
    <input type="hidden" name="action" value="/task/task_pool_process_image_achive_action" />
    <input name="event_submit_do_upload" type="hidden" value="

     

     录制下来的脚本:

      

    web_submit_data("process_image_achive.htm",

      "Action=http://bops.alibaba.net:8888/allTask/process_image_achive.htm",

      "Method=POST",

      "EncType=multipart/form-data",

      "RecContentType=text/html",

      "Referer=http://bops.alibaba.net:8888/allTask/process_image_achive.htm",

      "Snapshot=t11.inf",

      "Mode=HTML",

      ITEMDATA,

      "Name=action", "Value=/task/task_pool_process_image_achive_action", ENDITEM,

      "Name=event_submit_do_upload", "Value=anything", ENDITEM,

      "Name=actionEvent", "Value=imageAchieve", ENDITEM,

      "Name=_fmcr.pro._0.o", "Value=company", ENDITEM,

      "Name=_fmcr.pro._0.a", "Value=D:\\NCom_070723_212112_49.zip", "File=yes", ENDITEM,

      "Name=addnew", "Value=yes", ENDITEM,

      "Name=Submit1", "Value= "

      "\\xAE"

      " "

      "\\x9A"

      "(O) ", ENDITEM,

     

     

     

     

    系统2 的HTML

    <input type="file" id="logoFile" name="_fmn.sav._0.l" class="hiddenMask" ōnChange="comLogo.prePicture()" />

    application/octet-stream

     录制下来的脚本如下

      

    web_custom_request("save_company.htm",

      "URL=http://hz.my.alibaba.com/newborn/save_company.htm",

      "Method=POST",

      "Resource=0",

      "RecContentType=text/html",

      "Referer=http://hz.my.alibaba.com/newborn/save_company.htm",

      "Snapshot=t7.inf",

      "Mode=HTML",

      "EncType=multipart/form-data; boundary=---------------------------7d738225c60e78",

      "BodyBinary=-----------------------------7d738225c60e78\r\n"

      "Content-Disposition: form-data; name=\"action\"\r\n"

      ...

     "Content-Disposition: form-data; name=\"_fmn.sav._0.l\"; filename=\"D:"

      "\\x5C"

      "鍥介檯绔欐敼閫燶pic"

      "\\x5C"

      "NCom_070613_052134_266"

      "\\x5C"

      "company"

      "\\x5C"

      "70000151_aboutus1.JPG\"\r\n"

      "Content-Type: image/pjpeg\r\n"

      "\r\n"

      "\\xFF\\xD8\\xFF\\xE0\\x00\\x10"

      "JFIF"

     

    2种脚本都能正常工作,

     

     

     

  • mod_jk 配置不当导致响应时间缓慢以及吞吐率无法上升

    2008-02-20 22:50:04

    mod_jk.log 大量

    [Fri Nov 09 11:44:13 2007] [10151:10464] [info]  ajp_send_request::jk_ajp_common.c (1273): (ajp13) error connecting to the backend server

    [Fri Nov 09 11:44:13 2007] [10151:10464] [info]  ajp_service::jk_ajp_common.c (1941): (ajp13) sending request to tomcat failed,  recoverable operation attempt=1

    [Fri Nov 09 11:44:13 2007] [10156:10464] [info]  jk_open_socket::jk_connect.c (451): connect to 127.0.0.1:5081 failed (errno=110)

    [Fri Nov 09 11:44:13 2007] [10156:10464] [info]  ajp_connect_to_endpoint::jk_ajp_common.c (876): Failed opening socket to (127.0.0.1:5081) (errno=110)

    [Fri Nov 09 11:44:13 2007] [10156:10464] [info]  ajp_send_request::jk_ajp_common.c (1273): (ajp13) error connecting to the backend server (errno=110)

    [Fri Nov 09 11:44:13 2007] [10156:10464] [info]  ajp_service::jk_ajp_common.c (1941): (ajp13) sending request to tomcat failed,  recoverable operation attempt=1

     

     

    调整前的

     cat  workers.properties.bak
    worker.list=ajp13              
    worker.ajp13.port=5081         
    worker.ajp13.host=127.0.0.1
    worker.ajp13.type=ajp13

     

    Server.xml采用默认值。

    从症状看,不是程序的问题,是mod_jk配置有误。也不是版本失配。

     

     

    jbosstomcat配置加了这一段,maxThreads="350" maxProcessors="350" minSpareThreads="30" backlog="400" connectionTimeout="600000"

    apache  mod_jk  worker.property 增加pool的控制。 默认是一个连接。

    worker.localnode.lbfactor=1

    worker.localnode.connection_pool_size=50

    worker.localnode.connection_pool_minsize=25

    worker.localnode.connection_pool_timeout=600
    # Load-balancing behaviour
    worker.loadbalancer.type=lb
    worker.loadbalancer.balance_workers=localnode
    # Status worker for managing load balancer
    worker.status.type=status

     

  • loadrunner J2EE diagnositic 与loadrunner

    2008-02-20 22:42:43

     loadrunner 有专门的j2ee 诊断模块,可以降低性能分析瓶颈难度、透明化瓶颈环节。

     

    1.1.      访问diagnositic  server

     

    Loadrunner 8.1光盘里面有介质

    无多台diagnostic时,选择commander 模式安装介质。

    http://127.0.0.1:2006/

    或者远程 http://10.0.32.122:2006/  ,默认帐号是 admin

     

    1.2.      安装j2ee  probe

    选取diagnostic server10.0.32.122

    安装在C:\MercuryDiagnostics\JAVAProbe\

     

    startAgent.cmd 为启动代理,以便推送probe信息给server

    profiler.cmd   启动profiler

     

    http://127.0.0.1:35000 可以诊断probe是否安装好了

    配置文件位于 C:\MercuryDiagnostics\JAVAProbe\etc

     

    1.3.      loadrunner集成

    Loadrunner  license 管理器->configure  j2ee diagnostic

    但需要License.

    临时License 可以向hp mi 销售申请。

     

     

     

  • 浮点数比较问题

    2008-02-20 22:38:21

     

    float  prevValue;

    float      currValue;

     

    为了判断2个float 类型是否相等。

    if  (currValue == prevValue) 这种写法是有缺陷的。

     

     

    比较大小可以修改为: (prevValue + currValue - pBestProbs[endIndexT]) < 0.000000001
    double存放格式是包括符号位、幂数、系数组成。 


     if(preValue + currValue - pBestProbs[endIndexT] < 0.000000001) { //如果概率大

     

1617/9<123456789>
Open Toolbar