二.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);