POSTing multipart/form-data with Apache Bench (ab)

2020-05-25 06:06发布

问题:

I'm trying to benchmark our upload server by simulating several concurrent requests using Apache Bench (ab). I've read this post that details the necessary steps and also this Stackoverflow question but I'm still unable to create a valid benchmark.

This is the command I'm using with Apache Bench

ab -n 10 -c 6 -p post_data.txt -T "multipart/form-data; boundary=1234567890" http://myuploadserver.com/upload

These are the contents of my post_data.txt file. I apologize for the length.

--1234567890
Content-Disposition: form-data; name="upload"; filename="Octocat.png"  
Content-type: image/png

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
--1234567890--

Here is a link to the actual .txt file I'm testing with.

And finally, here is the error on the server (Node.js with Express and bodyParser() middleware)

POST /upload 400 1ms
Error: parser error, 12 of 25135 bytes parsed
at IncomingForm.write (/Users/bjedrocha/Development/platypus-node/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:143:17)
at IncomingMessage.<anonymous> (/Users/bjedrocha/Development/platypus-node/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:110:12)
at IncomingMessage.EventEmitter.emit (events.js:95:17)
at IncomingMessage.<anonymous> (_stream_readable.js:736:14)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:408:10)
at emitReadable (_stream_readable.js:404:5)
at readableAddChunk (_stream_readable.js:165:9)
at IncomingMessage.Readable.push (_stream_readable.js:127:10)
at HTTPParser.parserOnBody [as onBody] (http.js:140:22)

If I change the boundary hash, that's how many bytes are parsed according to Node - so it looks like it's only able to parse the boundary and then just fails. Can anyone spot what I'm doing wrong? Or suggest an alternative to what I'm trying to accomplish?

This is the image that has been base64 encoded. Thanks.

回答1:

In your post_data.txt you are using LF as linebreak (\n). You must be using CRLF as linebreak \r\n. Found this while reading here.

You can do this conversion with unix2dos or try instructions given here.