• 使用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 




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

  • 相关阅读:
    Java 链表
    知识点归列
    HTML和CSS必须知道的重点难点问题
    函数表达式
    javascript原型链
    canvas成长树
    checkbox选中问题
    使用vue-cli脚手架自定义iview主题
    AI学习吧-Redis操作-事务、订阅
    AI学习吧-REDIS-常识
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7345283.html
Copyright © 2020-2023  润新知