Performance 在Jenkins上使用Maven jmeter插件进行负载测试时给出;非HTTP响应代码:javax.net.ssl.SSLHandshakeException“;

Performance 在Jenkins上使用Maven jmeter插件进行负载测试时给出;非HTTP响应代码:javax.net.ssl.SSLHandshakeException“;,performance,jmeter,load-testing,jmeter-plugins,jmeter-maven-plugin,Performance,Jmeter,Load Testing,Jmeter Plugins,Jmeter Maven Plugin,我正在使用JMeter3.0进行负载测试API。我正在使用Maven Jmeter插件来运行负载测试。目前正在使用com.lazerycode.jmeter插件版本2.0.3。测试在我的本地机器上运行良好,但当我通过Jenkins运行它时,我得到“非HTTP响应代码:javax.net.ssl.SSLHandshakeException”。我在谷歌上搜索并尝试了各种论坛上建议的几乎所有东西,但错误并没有发生。我错过了什么?感谢您的帮助 请参阅下面的错误堆栈 httpSample t="1069"

我正在使用JMeter3.0进行负载测试API。我正在使用Maven Jmeter插件来运行负载测试。目前正在使用com.lazerycode.jmeter插件版本2.0.3。测试在我的本地机器上运行良好,但当我通过Jenkins运行它时,我得到“非HTTP响应代码:javax.net.ssl.SSLHandshakeException”。我在谷歌上搜索并尝试了各种论坛上建议的几乎所有东西,但错误并没有发生。我错过了什么?感谢您的帮助

请参阅下面的错误堆栈

httpSample t="1069" it="0" lt="0" ts="1485212600015" s="false" lb="ServiceProxy:TC#1: GET-  Health Check For Proxy Service" **rc="Non HTTP response code: javax.net.ssl.SSLHandshakeException" rm="Non HTTP response message: Received fatal alert: handshake_failure"** tn="Service Proxy Regression Test Plan 1-1" dt="text" by="2566" ng="1" na="1">

****** received  : [[[Non HTTP response code: javax.net.ssl.SSLHandshakeException]]]

****** comparison: [[[200                                                        ]]]

class="java.lang.String">javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
    at org.apache.http.conn.ssl.SSLSocketFactory.createLayeredSocket(SSLSocketFactory.java:573)
    at org.apache.http.conn.ssl.SSLSocketFactory.createLayeredSocket(SSLSocketFactory.java:447)
    at org.apache.jmeter.protocol.http.sampler.LazySchemeSocketFactory.createLayeredSocket(LazySchemeSocketFactory.java:121)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.updateSecureConnection(DefaultClientConnectionOperator.java:219)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.layerProtocol(ManagedClientConnectionImpl.java:421)
    at org.apache.jmeter.protocol.http.sampler.MeasuringConnectionManager$MeasuredConnection.layerProtocol(MeasuringConnectionManager.java:152)
    at org.apache.http.impl.client.DefaultRequestDirector.establishRoute(DefaultRequestDirector.java:815)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:616)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447)
    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:619)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:379)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1146)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1135)
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:465)
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:410)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:241)
    at java.lang.Thread.run(Thread.java:745)

我看到了这个错误。然后我发现这个错误是由Jenkins slave的java版本引起的。升级java版本,看看是否有帮助。

我能够解决这个问题。以下是解决方案:

1) 我正在使用maven jmeter插件和maven jmeter分析插件。简单来说,通过maven项目运行jmeter。为了解决SSLHandshakeException问题,将maven命令放在jenkins作业的“executeshell”区域,而不是“Goal”区域。我还将命令更改为“mvn-B-f./pom.xml verify-s settings.xml”

然而,在做了#1之后,我发现我的性能测试运行了两次。因此,我遵循了解决方案2

2) 我在詹金斯采用了自由泳项目,而不是马文项目。我把命令放在“执行shell”区域。我收到了“cmd fail”错误。这是因为旧版本的maven被用在了slave上。我指定了我想在slave上使用的maven的确切版本,一切正常

下面是它的样子:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export http_proxy=http://example.com:8080
export HTTP_PROXY=http://example.com:8080
export https_proxy=http://example.com:8080
export HTTPS_PROXY=http://example.com:8080


/usr/share/maven-3.3.9/bin/mvn -B -f ./pom.xml verify -s settings.xml -DSERVICE_P_NUM_OF_USERS=1 -DSERVICE_P_RAMP_UP_TIME=1 

詹金斯你跑得怎么样?作为Windows服务?如果是的话,我就面临着问题。建议通过任何服务器运行Jenkins,如
tomcat
等。