zoukankan      html  css  js  c++  java
  • 使用Apache JMeter压測Thrift

    我这里以我的一篇帖子为样例

    http://blog.csdn.net/mn960mn/article/details/50476759

    这里已经有服务端了,先启动服务端


    首先增加maven的依赖

    <dependency>
    	<groupId>org.apache.jmeter</groupId>
    	<artifactId>ApacheJMeter_java</artifactId>
    	<version>2.13</version>
    </dependency>
    之后。eclipse提示

    The following artifacts could not be resolved: commons-math3:commons-math3:jar:3.4.1, commons-pool2:commons-pool2:jar:2.3: Could not find artifact commons-math3:commons-math3:jar:3.4.1 

    说是找不到依赖。我去中央仓库找,的确没有。暂时的解决方法是:

    先下载

    org.apache.commons:commons-math3:3.4.1
    org.apache.commons:commons-pool2:2.3

    这两个jar到本地。然后,运行以下的命令。安装到本地maven仓库

    mvn install:install-file -Dfile=d:/tmp/commons-math3-3.4.1.jar -DgroupId=commons-math3 -DartifactId=commons-math3 -Dversion=3.4.1 -Dpackaging=jar
    mvn install:install-file -Dfile=d:/tmp/commons-pool2-2.3.jar -DgroupId=commons-pool2 -DartifactId=commons-pool2 -Dversion=2.3 -Dpackaging=jar

    注意,这里要下载上面提示缺失的版本号

    安装完之后。再编译。就没有错误提示了


    二:写一个类,继承Jmeter的类,在实现方法里面运行thrift的逻辑

    package com.pp.client;
    
    import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
    import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
    import org.apache.jmeter.samplers.SampleResult;
    import org.apache.thrift.TException;
    import org.apache.thrift.protocol.TCompactProtocol;
    import org.apache.thrift.protocol.TProtocol;
    import org.apache.thrift.transport.TSocket;
    import org.apache.thrift.transport.TTransport;
    import org.apache.thrift.transport.TTransportException;
    
    import com.pp.calc.Calculator;  
      
    /**
     * 在用jmeter压測的时候,一个线程会有一个当前类实例
     */
    public class ThriftClientTest extends AbstractJavaSamplerClient
    {
    	private Calculator.Client calc;
    	private TTransport transport;
    	
    	/**
    	 * init
    	 */
    	public void setupTest(JavaSamplerContext context)
    	{
    		super.setupTest(context);
    		
    		transport = new TSocket("127.0.0.1", 9988);    
            try
    		{
    			transport.open();
    		} catch (TTransportException e)
    		{
    			transport.close();
    			throw new RuntimeException(e);
    		}
              
            TProtocol protocol = new TCompactProtocol(transport);    
            
            calc = new Calculator.Client(protocol);  
    	}
    	
    	/**
    	 * close
    	 * 关闭相关的资源
    	 */
    	public void teardownTest(JavaSamplerContext context)
    	{
    		super.teardownTest(context);
    		transport.close();
    	}
    	
    	/**
    	 * 这里就是详细调用的逻辑
    	 */
    	public SampleResult runTest(JavaSamplerContext context)
    	{
    		SampleResult result = new SampleResult();  
            result.sampleStart();  
            try
    		{
    			System.out.println(calc.add(4, 5));
    			result.setSuccessful(true);  
    		} catch (TException e)
    		{
    			result.setSuccessful(false);  
    		}
            
            result.sampleEnd();  
            return result;  
    	}  
    }

    写完之后,运行mvn clean package打包

    然后,把打包的jar和libthrift-0.9.3.jar放到  apache-jmeter-2.13libext  文件夹中去(假设还有其它的依赖,也须要把依赖拷贝过来)


    三:启动jmeter

    在新建的线程组里面新建Sampler -> Java请求

    在出现的窗体中,类名称 右边的下拉框里面选择com.pp.client.ThriftClientTest 




    最后,配置对应的线程数,循环次数,就能够进行压力測试了

  • 相关阅读:
    Linux 学习 step by step (1)
    ubuntu server nginx 安装与配置
    ubuntu server samba服务器配置
    iOS app集成支付宝支付流程及后台php订单签名处理
    mac 连接windows 共享内容
    linux 文件查找,which,whereis,locate,find
    ubuntu server vsftpd 虚拟用户及目录
    ubuntu server 安装 mantis bug tracker 中文配置
    ubuntu server vsftpd 匿名用户上传下载及目录设置
    linux 用户管理,用户权限管理,用户组管理
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7345283.html
Copyright © 2011-2022 走看看