I heard and I forgot; I see and I remember; I do and I learned.

发布新日志

  • winsocket压力测试

    2007-02-05 10:27:57

    昨天用loadrunner写的脚本做压力测试。

    发现很多9017错误。连接超时。

    我的并发用户数是50个,后台服务启动了50个accept进程。(我想应该很够了)

    但是在后台用netstat监视,发现%50多的状态都是CLOSE_WAIT。

    不知道是什么原因。

    测试脚本如下:

     lrs_create_socket("socket02", "TCP", "RemoteHost=192.168.101.244:12008", LrsLastArg);
     
        lrs_send("socket02", "buf0", LrsLastArg);

     lrs_set_recv_timeout2(0,0);
         pcTest3=lrs_get_received_buffer ("socket02", 0, -1, NULL);
     lr_output_message("recv=[%s]\n",pcTest3);

     lrs_close_socket("socket02");
     

  • 问题来了

    2006-12-25 20:48:48

    刚才的脚本如果执行一次是没问题的,可是当我执行2次的时候,就运行报错了。
    错误日志如下:
    Virtual User scrīpt started
    Starting action vuser_init.
    vuser_init.c(7): lrs_startup(257)
    Ending action vuser_init.
    Running Vuser...
    Starting iteration 1.
    Starting action Action.
    Action.c(54): lrs_create_socket(sock00002, TCP, ...)
    Action.c(68): lrs_set_send_buffer(sock00002, buf, 40)
    Action.c(71): lrs_send(sock00002, buf0)
    Action.c(73): lrs_set_recv_timeout2(0, 0)
    Action.c(75): lrs_receive(sock00002, buf1)
    Action.c(77): lrs_get_received_buffer(sock00002, buf_p, size_p)
    Action.c(83): uc_key=[65040238]
    Action.c(91): pinkey=[3635303430323338]
    Action.c(115): encrypted pinblock=[??>>5006>=;9<?><]
    Action.c(126): lrs_create_socket(sock00003, TCP, ...)
    Action.c(131): lrs_set_send_buffer(sock00003, buf, 222)
    Action.c(132): ret=[0]
    Action.c(134): lrs_send(sock00003, buf0)
    Action.c(136): lrs_set_recv_timeout2(0, 0)
    Action.c(138): lrs_receive(sock00003, buf1)
    Action.c(138): Mismatch (expected 26 bytes, 261 bytes actually received)
    Action.c(139): lrs_get_received_buffer(sock00003, buf_p, size_p)
    Action.c(144): balance=[0.00]
    Action.c(145): lrs_free_buffer(buf_p)
    Ending action Action.
    Ending iteration 1.
    Starting iteration 2.
    Starting action Action.
    Action.c(54): lrs_create_socket(sock00002, TCP, ...)
    Action.c(68): lrs_set_send_buffer(sock00002, buf, 40)
    Action.c(71): lrs_send(sock00002, buf0)
    Action.c(73): lrs_set_recv_timeout2(0, 0)
    Action.c(75): lrs_receive(sock00002, buf1)
    Action.c(77): lrs_get_received_buffer(sock00002, buf_p, size_p)
    Action.c(83): uc_key=[65479956]
    Action.c(91): pinkey=[3635343739393536]
    Action.c(115): encrypted pinblock=[732>1>1:=9;3300:]
    Action.c(126): lrs_create_socket(sock00003, TCP, ...)
    Action.c(131): lrs_set_send_buffer(sock00003, buf, 222)
    Action.c(131): Error: C-interpreter run time error: Action.c (131):  Error -- memory violation : Exception ACCESS_VIOLATION received.
    Action.c(131): Notify: CCI trace: Action.c(131): LrsSetSendBuffer(0x00b70024 "sock00003", 0x00b7022e "ABCDEA1205INQ00003000030000000000000000O...", 222)
    .
    Action.c(131): Notify: CCI trace: Compiled_code(0): Action()
    .
    Ending Vuser...
    Starting action vuser_end.
    vuser_end.c(7): lrs_cleanup()
    Ending action vuser_end.




    为什么啊??
  • loadrunner winsocket脚本

    2006-12-25 20:45:17

    这几天一直在弄一个loadrunner的cs测试脚本,使用windows socket的cs脚本,弄了几天终于弄出点东东来。
    偶的测试脚本如下:

    unsigned char uc_key[9];
    unsigned char pinkey[17];
    unsigned char *mask = (unsigned char *) "19?2<8276:=0839;";

    Action()
    {
       
        char acTest[512];
        char acTest2[512];
        char* pcTest3;
        int i;
        char pinblock[17];
        char acct[26];
        char acc1[17];
        char balance[12];
        char seq_str[6];
         int i_seq=1;
        char socket_desc[10];
        int handler;
        int ret;   


        lr_load_dll("mydll.dll");

        i_seq++;
       
        sprintf(seq_str,"%.5d",i_seq);
        sprintf(socket_desc,"sock%.5d",i_seq);
        //char  *filename="1.out";
        //long  filestream;
       
        //filestream=fopen(filename,"w");
        lrs_create_socket(socket_desc, "TCP", "RemoteHost=192.168.101.79:7001", LrsLastArg);
       
       

        //生成发送的串
        sprintf(acTest,"ABCDEA");
        strcat(acTest,"1205");
        strcat(acTest,"RQK");
        strcat(acTest,seq_str);
        strcat(acTest,seq_str);
        strcat(acTest,"0000000000000000O");
       

        //指定发送的串
        lrs_set_send_buffer (socket_desc, acTest, strlen(acTest));
        //发送,由于之前运行了lrs_set_send_buffer,所以这里的"buf0"参数无效

        lrs_send(socket_desc, "buf0", LrsLastArg);

        lrs_set_recv_timeout2(0,0);
        //接收返回的串
        lrs_receive(socket_desc, "buf1", LrsLastArg);
        //把返回的串放到变量中
        pcTest3=lrs_get_received_buffer (socket_desc, 0, -1, NULL);

        //fprintf(filestream,"recv=[%s]\n",pcTest3);
        memcpy(uc_key,pcTest3+18,8);
        unshuffle_key(uc_key);
        //lr_output_message("recv=[%s]\n",pcTest3);
        lr_output_message("uc_key=[%s]\n",uc_key);
        memset(pinkey,0,sizeof(pinkey));

        for (i = 0; i < strlen(uc_key);i++)
        {
            pinkey[2*i]='3';
            pinkey[2*i+1]=uc_key[i];
        }
        lr_output_message("pinkey=[%s]\n",pinkey);
        //对返回串中的数据操作
        if( (strncmp(pcTest3,"ABP",3))==0 )
        {
            //modadd((unsigned char *)uc_key,(unsigned char *)"35827629",8);
            //lr_output_message("next uc_key=[%s]\n",uc_key);
            //String header = "ABCDEA" + terminalid + tranactioncode + seq + seq + "0124011200000002C";
            //header 6+4+3+5+5+17
           
            i_seq++;
            sprintf(socket_desc,"sock%.5d",i_seq);
            sprintf(seq_str,"%.5d",i_seq);
            sprintf(acTest2,"ABCDEA");
            strcat(acTest2,"1205");
            strcat(acTest2,"INQ");
            strcat(acTest2,seq_str);
            strcat(acTest2,seq_str);
            strcat(acTest2,"0000000000000000O");
            //sprintf(acTest,"ABCDEA1205INQ09046090460000000000000000O");
            //track3,track2  104+37
            strcat(acTest2,"999551002600007435017=1561560000000000000003000000214000000001=000000000000=000000000000=0000000274060009551002600007435017=00002202740600000");
            //pinblock
            strcpy(pinblock,"1205000006111111");
            encrypt_pinblock((unsigned char *)pinblock,pinkey);
            lr_output_message("encrypted pinblock=[%s]\n",pinblock);
            strcat(acTest2,pinblock);
            //account
            strcpy(acct,"9551002600000000115000000");
            memcpy(acc1,acct+2,16);
            shuffle((unsigned char *)acc1, (const unsigned char *)uc_key,(const unsigned char *)mask, 16);
            strcpy(acct,"95");
            memcpy(acct+2,acc1,16);
            memcpy(acct+2+16,"5000000",7);
            strcat(acTest2,acct);

            lrs_create_socket(socket_desc, "TCP", "RemoteHost=192.168.101.79:7001", LrsLastArg);

        //    handler=lrs_get_socket_handler(socket_desc);
        //    lr_output_message("handler=[%d]\n",handler);

            ret=lrs_set_send_buffer (socket_desc, acTest2, strlen(acTest2));
            lr_output_message("ret=[%d]\n",ret);

            lrs_send(socket_desc, "buf0", LrsLastArg);

            lrs_set_recv_timeout2(0,0);

            lrs_receive(socket_desc, "buf1", LrsLastArg);
            pcTest3=lrs_get_received_buffer (socket_desc, 0, -1, NULL);
            //lr_output_message("recv2=[%s]\n",pcTest3);
            memset(balance,0,sizeof(balance));
            memcpy(balance,pcTest3+59,11);
            unshuffle((unsigned char *)balance, (const unsigned char *)uc_key, (const unsigned char *)mask, 11);
            lr_output_message("balance=[%0.2f]\n",atof(balance));
            lrs_free_buffer(pcTest3);
           
        }
        //fclose(filestream);

        return 0;
    }


    说明:
    其实就是一个取款机的客户端,用它来压我的前置系统的。

我的栏目

数据统计

  • 访问量: 6172
  • 日志数: 4
  • 图片数: 1
  • 建立时间: 2006-12-08
  • 更新时间: 2007-02-05

RSS订阅

Open Toolbar