Curl JMeter的大文件上载失败

Curl JMeter的大文件上载失败,curl,file-upload,jmeter,httprequest,Curl,File Upload,Jmeter,Httprequest,我试图使用ApacheJMeter在文件上传场景中测试服务器的性能。具体来说,我使用HTTP测试脚本记录器创建一个测试计划来实现这个curl命令: $ curl -k -x localhost:8888 -XPOST -d @filename.json -H "Content-Type: application/json" "https://hostname:port" 以前,当filename.json只有几十行时,我已经成功地使用了这种方法,但是现在,当我想测试一个大约有72000行的js

我试图使用ApacheJMeter在文件上传场景中测试服务器的性能。具体来说,我使用HTTP测试脚本记录器创建一个测试计划来实现这个curl命令:

$ curl -k -x localhost:8888 -XPOST -d @filename.json -H "Content-Type: application/json" "https://hostname:port"
以前,当filename.json只有几十行时,我已经成功地使用了这种方法,但是现在,当我想测试一个大约有72000行的json(一个~5.1M文件)时,我得到了以下错误:

java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at sun.security.ssl.OutputRecord.writeBuffer(OutputRecord.java:431)
at sun.security.ssl.OutputRecord.write(OutputRecord.java:417)
at sun.security.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:876)
at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:847)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123)
at org.apache.http.impl.io.AbstractSessionOutputBuffer.write(AbstractSessionOutputBuffer.java:181)
at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:115)
at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:122)
at org.apache.http.entity.StringEntity.writeTo(StringEntity.java:169)
at org.apache.http.entity.HttpEntityWrapper.writeTo(HttpEntityWrapper.java:96)
at org.apache.http.impl.client.EntityEnclosingRequestWrapper$EntityWrapper.writeTo(EntityEnclosingRequestWrapper.java:112)
at org.apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.java:117)
at org.apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.java:265)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.sendRequestEntity(ManagedClientConnectionImpl.java:216)
at org.apache.jmeter.protocol.http.sampler.MeasuringConnectionManager$MeasuredConnection.sendRequestEntity(MeasuringConnectionManager.java:207)
at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:237)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:122)
at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:686)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:488)
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.proxy.Proxy.run(Proxy.java:240)
事实上,我相信这个问题在某种程度上在于JMeter,因为raw curl命令不涉及JMeter

curl -XPOST -d @filename.json -H "Content-Type: application/json" "https://hostname:port"
顺利上传文件


有人遇到过这个问题吗?任何帮助都将不胜感激。谢谢。

首先检查您的文件是否在jmeter/bin文件夹中

然后检查您是否正在使用JMeter最佳实践


并在您的问题中提供有关测试计划和测试方法的更多详细信息

首先检查您的文件是否位于jmeter/bin文件夹中

然后检查您是否正在使用JMeter最佳实践


并在您的问题中提供关于您的测试计划和测试方法的更多详细信息

您是使用多个用户还是单个线程运行此测试

检查分配给JMeter的内存,并尝试增加内存,以防您在多个用户中运行它。 确保正在拾取该文件。理想情况下,要上传的文件应该位于bin文件夹下。同时检查上传文件时发送的标题

还要检查是否有任何需要随文件一起传递的授权id。
其中之一应该有助于解决您的问题。

您是使用多个用户还是单个线程运行此测试

检查分配给JMeter的内存,并尝试增加内存,以防您在多个用户中运行它。 确保正在拾取该文件。理想情况下,要上传的文件应该位于bin文件夹下。同时检查上传文件时发送的标题

还要检查是否有任何需要随文件一起传递的授权id。
其中一个应该有助于解决您的问题。

谢谢您的回答。在测试脚本记录器运行时简单地输入这个curl命令就会出现这个错误。我相信这与将整个72k行文件加载到body data选项卡有关,这会导致内存过载。你知道如何解决这个问题吗?我不理解curl命令部分?你能解释一下你是怎么录的吗?您可以使用http采样器将json文件作为附件发送。谢谢您的回答。在测试脚本记录器运行时简单地输入这个curl命令就会出现这个错误。我相信这与将整个72k行文件加载到body data选项卡有关,这会导致内存过载。你知道如何解决这个问题吗?我不理解curl命令部分?你能解释一下你是怎么录的吗?您可以使用http采样器将json文件作为附件发送。