性能测试_Jmeter_redis

一直想总结一下使用Jmeter做性能测试过程中遇到的坑。今天难得清闲,胡乱写一些自己心得吧。

准备工作:

  1. jmeter 是基于java实现的,所以需要安装jdk, java安装完成,默认会自动配置环境变量。cmd,运行java –version,判断是否安装成功。
  2. 下载相应版本jmeter, 因为jmeter通常伴随Badboy使用。所以注意下载合适版本。
  3. 进入bin目录运行jmeter.bat启动jmeter. jmeter 运行过程中不要关闭这个命令框。

目的:

实现对redis数据库并发访问验证

步骤:

我们是使用thrift 框架来做RPC通信。所以先生成一个java版本的RPCSERVICE 代码。在eclipse建立一个包含jmeter的项目文件。导入rpcservice代码。如下:

* Autogenerated by Thrift Compiler (0.11.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */


package com.test.webservice;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.11.0)", date = "2018-04-18")

public class JiRPCService {

  public interface Iface {

    public java.lang.String SendRequest(java.lang.String requestDatas) throws org.apache.thrift.TException;

  }

  public interface AsyncIface {

    public void SendRequest(java.lang.String requestDatas, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;

  }

  public static class Client extends org.apache.thrift.TServiceClient implements Iface {
    public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> {
      public Factory() {}
      public Client getClient(org.apache.thrift.protocol.TProtocol prot) {
        return new Client(prot);
      }
      public Client getClient(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
        return new Client(iprot, oprot);
      }

 同时我们建立一个测试类:public class JmeterForRdThriftTest extends AbstractJavaSamplerClient {}

这个里面的核心在public SampleResult runTest(JavaSamplerContext arg0)

具体上代码如下:

public SampleResult runTest(JavaSamplerContext arg0) {
		String server_host = arg0.getParameter("server_host");
		Integer server_port = arg0.getIntParameter("server_port");
		Integer timeout = arg0.getIntParameter("timeout");
		String body = arg0.getParameter("body");
		String response = null;
		SampleResult sr = new SampleResult();
		sr.setSampleLabel("we want to listen the host and port");

		sr.sampleStart();

		TTransport transport = new TSocket(server_host, server_port, timeout);

		TProtocol protocol = new TBinaryProtocol(transport);

		JiebaoRPCService.Client rpcClient = new JiebaoRPCService.Client(protocol);

		try {
			transport.open();
			
			response = rpcClient.SendRequest(body);
			sr.setResponseData("Test result: pass " +"12"+server_host+server_port+timeout+body+"   "+ response, null);
			sr.setDataType(SampleResult.TEXT);

			sr.setSuccessful(true);

		} catch (TException ex) {
			sr.setSuccessful(false);
			ex.printStackTrace();
		} finally {
			transport.close();
			sr.sampleEnd();
		}

		return sr;

 打包jar文件,并且保存到jmeter对应的jar文件夹。

在jmeter我们创建一个3秒并发5000的任务量。验证读取redis端口。对服务器的影响。

猜你喜欢

转载自blog.csdn.net/wangweimic/article/details/86690341