首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ApacheBench:进入乙醚的请求时间

ApacheBench:进入乙醚的请求时间
EN

Server Fault用户
提问于 2009-06-06 00:32:32
回答 2查看 372关注 0票数 1

我有一个Apache服务器,它通过mod_jk代理Tomcat。我在Apache中设置了一个自定义日志来记录访问时间:

代码语言:javascript
复制
LogFormat "%h %l %u %t \"%r\" %>s %b %D" transfertimes
CustomLog /path/to/transfer-times.log transfertimes

我正在web服务器本身上运行ApacheBench。我注意到,随着并发性的提高,我的第99百分位数请求次数似乎呈指数增长,尽管第50百分位数保持相对稳定。例如,ApacheBench会说,大约10个1000个请求需要>1秒才能响应,并发级别为100。

但是,当我查看Transport-Timees.log时,根据LogFormat中的%D,没有任何请求显示大于1秒。我正在试图找出什么会导致Apache的日志和ApacheBench报告的访问时间之间的差异。通常,我可以将其归因于网络延迟,但我在单个主机上运行这一切。我在想,我需要对Linux参数或文件描述符进行一些奇怪的调整,但我不知道从哪里开始。

EN

回答 2

Server Fault用户

发布于 2009-06-08 06:42:55

可能实际上并不是apache需要这么长的时间才能提供请求,而是您遇到了操作系统中已经定义的其他限制。

看看netstat给您提供了多少可接受的连接,很有可能您会发现apache看到的请求数量(因此在apache知道的时间范围内提供服务)和操作系统已经可以处理的请求数量有很大的不同。

代码语言:javascript
复制
netstat -tulpen

在这里可能会有帮助。还请看一下sysctl告诉您的限制,甚至可能是iptables。

很抱歉,我记不起任何细节了,因为我已经很久没有遇到这样的问题了。

票数 1
EN

Server Fault用户

发布于 2009-06-10 14:19:48

我认为,由于apache或mod_jk切换中的工作人员不足,您的外围请求处于接受待办状态。

要正确地在apache和tomcat之间进行代理,您需要设置tomcat连接器以处理尽可能多的apache将分叉子节点的连接。如果没有,apache将不得不阻止等待tomcat释放连接。这会导致额外的阻塞,因为等待tomcat的工作人员将无法处理传入连接。

http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html

ps。不要把%D当作福音。它只测量apache子进程开始工作的时间(因此不计算接受/叉/切换持续时间)和通过send()发送最后一个字节的时间(由于操作系统缓冲,这是高度可变的)。

pps。调优AJP是一个黑色的艺术,IMHO的好处AJP (稍微容易解析请求,持久连接)不再是一个理由回避直接HTTP代理。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/20933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档