我正在尝试使用ab向使用django构建的表单发出HTTP POST请求.
我正在使用以下行:
ab -n 10 -C csrftoken=my_token -p ab_file.data -T application/x-www-form-urlencoded http://localhost:8000/
Run Code Online (Sandbox Code Playgroud)
我ab_file.data看起来像这样:
url=my_encoded_url&csrfmiddlewaretoken=my_token
Run Code Online (Sandbox Code Playgroud)
它始终返回403状态代码.
当我使用curl相同的参数时,它的工作原理.卷曲线:
curl -X POST -d "url=my_encoded_url&csrfmiddlewaretoken=my_token" --cookie "csrftoken=my_token" http://localhost:8000/
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在尝试使用以下命令通过 brew 在我的 macos(macOS Mojave)上安装 Apache BenchMark:
brew install homebrew/apache/ab
Run Code Online (Sandbox Code Playgroud)
收到此错误:
Error: homebrew/apache was deprecated. This tap is now empty and all its contents were either deleted or migrated.
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用apache bench在我的rails应用程序中加载测试创建操作,但是ab似乎没有发送POST数据 - 尽管它确实提交了POST而不是GET请求.
这是我运行的命令:
ab -n 1 -p post -v 4 "http://oz01.zappos.net/registrations"
Run Code Online (Sandbox Code Playgroud)
这是帖子文件的内容:
authenticity_token=M18KXwSOuIVbDPZOVQy5h8aSGoU159V9S5uV2lpsAI0
Run Code Online (Sandbox Code Playgroud)
rails日志显示POST请求,但不显示任何发布的参数:
Started POST "/registrations" for 10.66.210.70 at Thu Sep 09 17:48:06 -0700 2010
Processing by RegistrationsController#create as */*
Rendered registrations/new.html.erb within layouts/application (14.0ms)
Completed 200 OK in 24ms (Views: 14.6ms | ActiveRecord: 0.1ms)
Run Code Online (Sandbox Code Playgroud)
而来自浏览器的POST请求会导致此日志条目:
Started POST "/registrations" for 192.168.66.20 at Thu Sep 09 17:49:47 -0700 2010
Processing by RegistrationsController#create as HTML
Parameters: {"submit"=>"true", "authenticity_token"=>"AfNG0UoTbJXnxke2725efhYAoi3ogddMC7Uqu5mAui0=", "utf8"=>"\342\234\223", "registration"=>{"city"=>"", "address"=>"", "name"=>"", "zip"=>"", "optin"=>"0", "state"=>"", "email"=>""}}
Rendered registrations/new.html.erb within …Run Code Online (Sandbox Code Playgroud) 什么是apache基准测试中的并发请求(-c)?
我认为是在单个时间点创建的同时请求(处理)的数量?
任何人都可以解释我错了吗?你能举例说明并发请求是如何工作的吗?我怎样才能测试这个Boundary Value Analysis(BVA)测试
我们有一个MySQL驱动的网站,有时会在48小时内获得100K用户,所有用户都登录到网站并进行购买.
我们正在尝试使用Apache Bench和Siege等工具来模拟这种负载.
虽然关键指标在我看来是并发用户的数量,而且我们得到了报告结果,但我们仍然觉得我们处于黑暗中.
我想问的是:我们应该测试什么样的东西来预测这种流量?
50个并发用户1000次?500个并发用户10次?
我们正在查看数据库错误,Apache超时和响应时间.我们还应该注意什么?
这是一个模糊的问题,我知道没有"正确"的答案,我们只是在寻找一些关于如何确定我们的基础设施可以切实处理的一般性想法.
提前致谢!
有没有办法确保AB从服务器获得正确的响应?例如:
我想确保身份验证正常工作,我正在测量目标页面的响应时间,而不是登录表单.
目前,我只是代替ab -n 100 -c 1 -C "$MY_COOKIE" $MY_REQUEST用curl -b "$MY_COOKIE" $MY_REQUEST | lynx -stdin.
如果不可能,是否有其他更全面的工具可以做到这一点?
ab -n 1 -c 1 http:// localhost:2020/welTo.do?pxtId = 3000007937&superDo = jack
我得到第一个查询字符串的答案,但我也得到了
'superDo'不被识别为内部或外部命令,可操作程序或批处理文件.
请帮我
TIA
关心thiru
我已经做了一些使用Apache Bench来分析我的代码响应时间的实验,但它并没有为我生成正确的数据类型.我希望这里的好人有想法.
具体来说,我需要一个工具
我知道ab -e,它将数据打印到文件.问题是这只打印了分位数据,这很有用,但不是我需要的.该ab -g选项可以工作,除了它不打印亚秒数据,这意味着我没有我需要的分辨率.
我写了几行Python来做,但是httplib非常低效,结果没用.一般来说,我需要比纯Python更精确的精度.如果有人对Python可以使用的库有建议,我会全力以赴.
我需要一些高性能,可重复且可靠的东西.
我知道,我的一半回答将是"互联网延迟使得那种详细的测量毫无意义".在我的特定用例中,这不是真的.我需要高分辨率时序细节.实际使用我的HPET硬件的东西会很棒.
由于答案和观点数量较少,因此在这里投入了赏金.
我正在尝试使用apache bench在我们的API服务器上进行一些非常简单的基准测试,我知道它不是加载测试web服务器的理想工具,但这不是重点.
我们有几台服务器和几台虚拟机(托管在这些服务器上).所有这些都运行相同的nginx,uwsgi和一个cherrypy webapp堆栈.我可以在新服务器(没有VM)上使用apachebench,结果如下:
Server Software: CherryPy/3.2.2
Server Hostname: 10.0.2.4
Server Port: 5000
Document Path: /api/v4/ping
Document Length: 245 bytes
Concurrency Level: 1
Time taken for tests: 10.100 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 397000 bytes
HTML transferred: 245000 bytes
Requests per second: 99.01 [#/sec] (mean)
Time per request: 10.100 [ms] (mean)
Time per request: 10.100 [ms] (mean, across all concurrent requests)
Transfer rate: 38.38 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max …Run Code Online (Sandbox Code Playgroud) 我们有一个webapp,它通过.NET IHttpHandler(称为proxy.ashx)路由许多请求,用于CORS和安全目的.某些资源加载速度很快,而其他资源则根据这些资源所需的大量计算加载速度慢.这是预料之中的.
在负载很重的情况下,proxy.ashx会慢慢爬行,所有资源都会永远加载.在这些峰值加载时间内,如果绕过代理并直接加载资源,则会立即加载,这意味着代理是瓶颈.
(即http://server/proxy.ashx?url = http:// some_resource加载缓慢,但http:// some_resource自行加载速度快).
我有一个假设,即响应性降低是因为IHttpHandler是同步编码的,当有太多长时间运行的请求处于活动状态时,IIS请求线程都忙.我创建了一个快速A/B测试应用程序来验证我的假设,我的测试结果表明情况并非如此.
这篇文章是我基于请求线程池的理解.
在Web服务器上,.NET Framework维护一个用于为ASP.NET请求提供服务的线程池.当请求到达时,将调度池中的线程来处理该请求.如果同步处理请求,则在处理请求时阻止处理请求的线程,并且该线程无法为另一个请求提供服务....
但是,在异步调用期间,服务器在等待第一个请求完成时不会阻止响应其他请求.因此,当有许多请求调用长时间运行的操作时,异步请求会阻止请求排队.
在下面的示例中,理论上,同步处理程序应该在某个阈值之后占用请求线程,从而阻止更多新请求启动.异步处理程序应该允许更多的请求排队,因为每个请求几乎立即将其请求线程返回到线程池,等待它Task.Delay,允许该请求线程在前一个请求仍在等待时处理新请求.
同步HttpHandler
<%@ WebHandler Language="C#" Class="SyncHandler" %>
using System.Web;
using System.Threading;
public class SyncHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//BLOCKING artifical pause to simulate network activity
Thread.Sleep(300);
var Response = context.Response;
Response.Write("sync response");
}
public bool IsReusable { get { return true; } }
}
Run Code Online (Sandbox Code Playgroud)
异步处理程序
<%@ WebHandler Language="C#" Class="AsyncHandler" %>
using System.Web;
using System.Threading.Tasks;
public class …Run Code Online (Sandbox Code Playgroud) apachebench ×10
apache ×3
benchmarking ×3
.net ×1
c# ×1
django ×1
latency ×1
linux ×1
macos ×1
networking ×1
performance ×1
post ×1
profiling ×1
python ×1
tcp ×1