首先我们的json字符串直接放在文件postfile中
在我们使用json格式时,注意一定要将headers的Content_type设置为application/json,否则服务器端可能不能正确识别传送的body格式。
siege
经过测试的版本为3.02和3.04
siege POST请求:
尝试1:
siege -T 'application/json' -c 500 r 1 '172.19.180.166/fcgi-bin/rs/ POST <./postfile'
服务器端接收到body为postfile文件内容,但是content_type依旧是默认值“application/x-www-form-urlencoded”,致使服务器端不能正确处理。
尝试2:
siege -H 'Content-Type:application/json' -c 500 r 1 '172.19.180.166/fcgi-bin/rs/ POST <./postfile'
情况与1相同。说明不能通过-H和-T来修改content_type
尝试3:
将postfile文件名修改为postfile.json
siege -c 500 r 1 '172.19.180.166/fcgi-bin/rs/ POST <./postfile.json'
content_type被正确设置为application/json,服务器正常处理返回。原来siege只能通过文件的扩展名来确定content type格式
此处参考http://www.joedog.org/siege-faq/
ad
该工具比较好用,没出现什么问题,一条命令搞定:
ab -n 5000 -c 500 -p postfile -T 'application/json' '172.19.180.166/fcgi-bin/rs/'
测试搞定
siege -c 1 -t 10000S -H "X-Request-At: 20151020T093059+08:00" -H "X-Application-Id: 2d64b312-d1f0-41a9-9255-fccba872e53a" -H "X-Application-Auth: e6404eb40d6d8c7c634fae3c1cc3221e" -H "Accept: application/vnd.tcop+json; version=20150601" -H "Content-Type: application/x-www-form-urlencoded" 'http://x.x.x.x/aaa/ POST ip_addr=x.x.x.x&port=5342'