使用 Jmeter ZK 插件上传失败
Upload failed while using Jmeter ZK Plugin
我目前在尝试使用 zk-plugin 运行 Jmeter 上传文件时遇到问题。在没有 运行 Jmeter 的情况下上传时它工作正常。
它在 ZK 中显示弹出消息:
Upload Aborted : (contentId is required)
Jmeter 内部:
Thread Name: Thread Group 1-1
Sample Start: 2015-04-16 17:35:15 SGT
Load time: 2
Connect Time: 0
Latency: 0
Size in bytes: 2549
Headers size in bytes: 0
Body size in bytes: 2549
Sample Count: 1
Error Count: 1
Response code: Non HTTP response code: java.io.FileNotFoundException
Response message: Non HTTP response message: 13 4 2015.txt (The system cannot find the file specified)
Response headers: HTTPSampleResult fields: ContentType: DataEncoding: null
如何解决这个问题?
基本上 ZK 可能 return 不是很有意义的消息,因此可能是导致此问题的不同路由原因。
在下面查看部署组件配置中可能的要点并一一检查:
首先 - 检查 java.io.tmpdir
指向的目录是否存在。
如果您使用 Tomcat,默认情况下 java.io.tmpdir
将设置为 $CATALINA_BASE/temp
。
查看 catalina.sh 并检查 $CATALINA_TMPDIR
指向的目录是否存在并且应用了相应的权限:
if [ -z "$CATALINA_TMPDIR" ] ; then
# Define the java.io.tmpdir to use for Catalina
CATALINA_TMPDIR="$CATALINA_BASE"/temp
fi
. . .
. . .
-Dcatalina.base=\"$CATALINA_BASE\" \
-Dcatalina.home=\"$CATALINA_HOME\" \
-Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
org.apache.catalina.startup.Bootstrap "$@" start
WEB-INF/zk.xml: max-upload-size
ZK 配置描述符中的值(默认 5120 Kb,应该足够了)。
WEB-INF/web.xml:部署描述符中的 max-file-size
和 max-request-size
值:
<multipart-config>
<!-- 52MB max -->
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
conf/server.xml:连接器部分中的 maxPostSize
值(将由 POST 处理的最大字节数容器FORMURL参数解析):
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxPostSize="67589953" />
似乎我们只能上传 jmeter/bin 中的文件。我使用 jmeter/bin 中的一些文件上传,但消息消失了。
During recording you need to put the file you want to upload in jmeter/bin folder. This is due to some limitations of browsers which do not transmit the full path.
参考:File upload fails during recording using JMeter,pmpm第一个回答
我目前在尝试使用 zk-plugin 运行 Jmeter 上传文件时遇到问题。在没有 运行 Jmeter 的情况下上传时它工作正常。
它在 ZK 中显示弹出消息:
Upload Aborted : (contentId is required)
Jmeter 内部:
Thread Name: Thread Group 1-1
Sample Start: 2015-04-16 17:35:15 SGT
Load time: 2
Connect Time: 0
Latency: 0
Size in bytes: 2549
Headers size in bytes: 0
Body size in bytes: 2549
Sample Count: 1
Error Count: 1
Response code: Non HTTP response code: java.io.FileNotFoundException
Response message: Non HTTP response message: 13 4 2015.txt (The system cannot find the file specified)
Response headers: HTTPSampleResult fields: ContentType: DataEncoding: null
如何解决这个问题?
基本上 ZK 可能 return 不是很有意义的消息,因此可能是导致此问题的不同路由原因。
在下面查看部署组件配置中可能的要点并一一检查:
首先 - 检查
java.io.tmpdir
指向的目录是否存在。
如果您使用 Tomcat,默认情况下java.io.tmpdir
将设置为$CATALINA_BASE/temp
。
查看 catalina.sh 并检查$CATALINA_TMPDIR
指向的目录是否存在并且应用了相应的权限:if [ -z "$CATALINA_TMPDIR" ] ; then # Define the java.io.tmpdir to use for Catalina CATALINA_TMPDIR="$CATALINA_BASE"/temp fi . . . . . . -Dcatalina.base=\"$CATALINA_BASE\" \ -Dcatalina.home=\"$CATALINA_HOME\" \ -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \ org.apache.catalina.startup.Bootstrap "$@" start
WEB-INF/zk.xml:
max-upload-size
ZK 配置描述符中的值(默认 5120 Kb,应该足够了)。WEB-INF/web.xml:部署描述符中的
max-file-size
和max-request-size
值:<multipart-config> <!-- 52MB max --> <max-file-size>52428800</max-file-size> <max-request-size>52428800</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config>
conf/server.xml:连接器部分中的
maxPostSize
值(将由 POST 处理的最大字节数容器FORMURL参数解析):<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxPostSize="67589953" />
似乎我们只能上传 jmeter/bin 中的文件。我使用 jmeter/bin 中的一些文件上传,但消息消失了。
During recording you need to put the file you want to upload in jmeter/bin folder. This is due to some limitations of browsers which do not transmit the full path.
参考:File upload fails during recording using JMeter,pmpm第一个回答