Perl 如何在真实负载下将日志中的流量重放到web服务器的配置文件/基准web应用程序?
是否有一种方法可以获取web服务器的真实网络流量(例如,从web服务器日志(Apache))并在真实负载下将此流量重放到概要web应用程序(Perl)中,或者在选择其中一种之前对不同实现的速度进行基准测试和比较 如果重要的话,webapp是用Perl编写的,并在普通CGI、FastCGI、mod_Perl(通过ModPerl::Registry)、PSGI(通过Plack::App::WrapCGI)下运行 交叉张贴到Perl 如何在真实负载下将日志中的流量重放到web服务器的配置文件/基准web应用程序?,perl,performance,web-applications,stress-testing,Perl,Performance,Web Applications,Stress Testing,是否有一种方法可以获取web服务器的真实网络流量(例如,从web服务器日志(Apache))并在真实负载下将此流量重放到概要web应用程序(Perl)中,或者在选择其中一种之前对不同实现的速度进行基准测试和比较 如果重要的话,webapp是用Perl编写的,并在普通CGI、FastCGI、mod_Perl(通过ModPerl::Registry)、PSGI(通过Plack::App::WrapCGI)下运行 交叉张贴到 关于服务器故障的类似问题: 对方给出了简短的回答 更详细的回答是您不能
关于服务器故障的类似问题:
- 对方给出了简短的回答
更详细的回答是您不能:您将丢失请求头和帖子正文。如果只需要GET请求,并且没有通过查询参数实现会话跟踪,那么这是可能的
一个问题:你想这样做是因为(1)你想模拟真实世界的流量分布在你的页面中吗?(2)有太多的页面,甚至考虑建立任何类型的测试脚本。
< P>在谷歌上进行快速扫描,得到了一个有趣的博客条目,随后有有用的评论在。一位评论员还提到了允许实时录制会话的功能,并明确指出您应该能够将其回放。但是,这对现有的Apache访问日志没有太大帮助。这里有一个简单的perl方法来记录真实的http流量并回放它:最近来过这里。我想,如果我用tcpdump转储tcp流量,我可以重写包的目的地,然后将其重播到新的应用服务器上。所以我从这样的事情开始:
tcpdump -i eth1 dst -s 0 -w - port 80 | \
tcprewrite --mtu-trunc --infile=- --outfile=- \
--dstipmap=<source_ip>:<destination_ip> | \
tcpslice -w - - | tcpreplay --intf1=eth1 -
tcpdump-i eth1 dst-s 0-w-端口80|\
tcprewrite--mtu trunc--infle=--outfile=-\
--dstimap=:|\
tcpslice-w---| tcpreplay--intf1=eth1-
由于各种原因,它不起作用,所以我开始挖掘更多的内容,并找到了Gor:一个由Granify的Leonid Bugaev编写的小型Go项目,它正是为我们想要实现的目标而编写的
这就是我们最终使用Gor的原因:
我们也有厨师烹饪手册:
希望这能有所帮助。对于我想要进行基准测试/评测的特定web应用程序,这无关紧要:它只使用GET请求,实际上与wrt没有区别。请求头(除了用作“text/html”和“application/xml+xhtml”)之外。问题不仅在于优化真实世界的流量,还在于真实流量会产生web应用程序感觉到的I/O压力(这是I/O,而不是CPU或内存或网络限制)。有主页,800+子页面,然后这些子页面有许多子页面。。。第一个链接给了我“找不到页面”,不幸的是在