zoukankan      html  css  js  c++  java
  • LoadRunner 常见错误收集及解决方案

    一. This Vuser already started a transaction with the same name, and has not yet processed the corresponding lr_end_transaction statement.
      在做性能测试的时候,有时候会遇到下面的错误:This Vuser already started a transaction with the same name, and has not yet processed the corresponding lr_end_transaction statement.
      解释:就是脚本中有一个事物开始了,但是没有结束事物,此时loadrunner就会报错,因为开始和结束是一一对应的,谁也不能把它们拆开,拆开了就会报错。
      异常再现:
      下列代码中,如果业务方法报了异常(Throw Exception),那么下面的if判断的代码不会被执行,而直接跳到catch子句里,那么已经开始的业务"searchItemList_man"就没有被结束,当你再次开始业务时,就会报错~
    1 public int action() throws Throwable {
    2
    3         misc = generateManItemSearchCondition();
    4                 lr.start_transaction("searchItemList_man");
    5         try {
    6             //业务方法
    7             items = searchService.searchItemList(misc);
    8             if (items.isSuccess()) {
    9                 lr.end_transaction("searchItemList_man",lr.PASS);
    10
    11             } else {
    12                 lr.end_transaction("searchItemList_man",lr.FAIL);
    13             }
    14             orderMap.clear();
    15             productIdSet.clear();
    16             productStatusList.clear();
    17         } catch (Exception e) {
    18
    19
    20             e.printStackTrace();
    21         }
    22
    23
    24         misc = null;
    25         items = null;
    26         return 0;
    27     }//end of action
      解决办法:  在catch字句里加上一个 事务结束代码,修改后的catch段代码如下:
    catch (Exception e) {
    // TODO Auto-generated catch block
    lr.end_transaction("searchItemList_man",lr.FAIL);
    e.printStackTrace();
    }
     二.Function two_way_comm_post_message / two_way_comm_post_message_ex failed错误
      在Controller里运行脚本,运行一段时间以后出现如下error messages。
      1. Code - 60990 Error: Two Way Communication Error: Function two_way_comm_post_message / two_way_comm_post_message_ex failed.
      2. Code - 29739 Error: Service client with id=1 failed to post a message, reason - communication error.
      3. Code - 16895 Error: Failed to post xdr buffers data array by post_ex.
      4. Code - 10343 Error: Communication error: Cannot send the message since reached the shared memory buffer max size.
      问题诱因1:
      共享内存缓存溢出,造成Controller和Load Generator之间通讯出现问题。
      解决方案:
      修改两个配置文件。
      1. $installation folder$datchannel_configure.dat
      2. $installation folder$launch_servicedatchannel_configure.dat
      在这两个文件中的[general]部分下添加如下配置。
      shared_memory_max_size=100 (修改共享内存为100MB,默认是50MB)
      重新启动Controller,问题解决。
      问题诱因2
      打开 controller中的 diagnostics菜单,点掉复选框.. 步骤如下图
      1.
      2. 点掉 Enable the following diagnostics
      3. 整理了一下 这个功能是干么滴:
      当场景中打开 Diagnostics 菜单下 Web Page Diagnostics 功能后, 才能得到网页分析组图。
      通过该图, 可以对事务的组成进行抽丝剥茧的分析, 得到组成这个页面的每一个请求的时间分析, 进 一步了解响应时间中有关网络和服务器处理时间的分配关系。
      可以实现对网站的前端性能分析, 明确系统响应时间较长是由服务器端处理能力不足还是客户端链接 到服务器的网络消耗导致的。
      三. Fatal Error -26000: Not enough memory (12320 bytes) for "new buffer in LrwSrvNetTaskIt 问题解决及lr脚本心得
      现象: 用loadrunner跑场景的时候报错:
      Action.c(28): Fatal Error -26000: Not enough memory (12320 bytes) for "new buffer in LrwSrvNetTaskItem::AllocSrvNetBuf". Aborting 的错误,
      同时任务管理器里mmdrv.exe 内存占用一直增大,最终mmdrv.exe崩溃. 网上有人认为是 lr的 emulation browser设置问题,最后发现系脚本问题,原脚本声明了好几个变量,而且都未使用:
    1 Action()
    2 {
    3
    4          //返回的字符串
    5     char resp_txt[200] = {0};
    6     //写入流的数据
    7     long myfile;
    8     //当前日期时间
    9     long now;
    10    .....
    11    ......
    12
    13     return 0;
    14 }
      解决方法及总结:
      后将此三个变量注释之后问题解决.
      结论:LR的脚本要注意内存的使用,尽量减少变量声明,对于char类型的变量要及时用free:即:
      1  char * a;
      2  free (a);
  • 相关阅读:
    SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)
    HttpWatch工具简介及使用技巧
    橙色在网页设计运用:36个启发灵感的案例
    JS Date格式化为yyyyMMdd类字符串
    60款很酷的 jQuery 幻灯片演示和下载
    浅谈SQL Server中统计对于查询的影响
    C#创建Windows Service(Windows 服务)基础教程
    使用分页方式读取超大文件的性能试验
    240多个jQuey插件
    ASP.NET性能优化之负载均衡
  • 原文地址:https://www.cnblogs.com/Darrenblog/p/8352732.html
Copyright © 2011-2022 走看看