2016-08-16 4 views
0

Apache JMeter를 사용하여 파일 업로드 시나리오에서 서버의 성능을 테스트하려고합니다. 특히,이 컬 명령을 실현하기 위해 테스트 계획 생성하기 위해 HTTP 테스트 스크립트 레코더를 사용하고 있습니다 :JMeter로 큰 파일 업로드 실패

$ curl -k -x localhost:8888 -XPOST -d @filename.json -H "Content-Type: application/json" "https://hostname:port" 

내가 filename.json은 수십 라인 긴 때 전에이 방법으로 성공을 거두었습니다,하지만 지금은 때 나는 약 72,000 라인 (A ~ 5.1M 파일)와 JSON을 테스트하려면, 나는 다음과 같은 오류 얻을 : 실제로

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를 함께 거짓말을 믿고 있기 때문에 '아무튼 원시 컬 명령 JMeter 포함

curl -XPOST -d @filename.json -H "Content-Type: application/json" "https://hostname:port" 

은 문제없이 파일을 업로드합니다.

누구에게이 문제가 발생 했습니까? 어떤 도움이라도 대단히 감사하겠습니다. 고맙습니다.

답변

0

당신은 여러 사용자 또는 단일 스레드와이 테스트를 실행하고 있습니까?

JMeter에 할당 된 메모리를 확인하고 여러 사용자와 함께이 메모리를 실행하는 경우에 대비하여 메모리를 늘리십시오. 파일을 선택했는지 확인하십시오. 이상 적으로 업로드 할 파일은 bin 폴더 아래 있어야합니다. 또한 파일을 업로드하는 동안 보내는 헤더를 확인하십시오.

또한 파일과 함께 전달되어야하는 권한 부여 ID가 ​​있는지 확인하십시오. 이 중 하나가 문제를 해결하는 데 도움이됩니다.

+0

답변 해 주셔서 감사합니다. 테스트 스크립트 레코더가 실행되는 동안이 curl 명령을 입력하기 만하면이 오류가 발생합니다. 전 72k 라인 파일이 메모리에 과부하가되고있는 본문 데이터 탭에로드되는 것과 관련이 있다고 생각합니다. 이 문제를 해결하는 방법을 알고 있습니까? – Samasambo

+0

나는 컬 명령 부분을 이해하지 못했습니까? 녹음하는 방법을 설명해 주시겠습니까? json 파일을 http sampler로 첨부 파일로 보낼 수 있습니다. –