缓慢的移动设备networking响应堵塞我的阿帕奇工人

我正在运行一个Web服务器(Apache,但我不认为有真正的区别),这为移动设备提供了很多请求(每秒数百次)。 服务器是纯Web服务器与J2EE应用程序服务器的前端服务器的混合(通过类似于AJP的连接)。

我注意到的是,我经常需要增加Apache工作人员的数量以跟上请求数量。 而当瓶颈开始发生时,我看到大量(〜90%)的工作者忙于“写信给客户”和“closures联系”。

我明白这是正常的。 考虑到客户端的速度较慢,它会阻止Apache工作人员,直到工作人员可以解决个别客户端请求。 但我想知道是否有一个专用的系统,h / w或s / w可以缓冲请求/和响应的stream量。 我听说过所有这些“stream量加速”硬件,但是我不知道从哪里开始寻找能够完全实现这一目标的硬件。

谢谢!

既然你提到过硬件,那么你可能想看看F5的BigIP,这样可以在这样的情况下产生巨大的差异。 它将终止这些移动(和其他)客户端连接,caching内容,并优化后端stream程。 这是昂贵的东西,但。

移动客户端的另一个窍门是,由于信号强度不够理想,而不是链路拥塞,所以它们经常丢失数据包。 这导致TCP / IP堆栈退出,所以数据速率可能会很糟糕。 BigIP也可以帮助这样的情况,所以它可能是值得研究的。

在开放源代码方面,您可能会考虑使用nginx或其他asynchronousI / O代理来面向您的系统,并有可能将这些连接缓冲一下。 这可能是尝试的第一步 – 您可以在nginx上启用代理缓冲,所以效果是将连接卸载到nginx,而不是apache和您的dynamic应用程序。

尝试在Apache Vhostconfiguration中设置Keepalive Off

有时移动连接由服务器代理,服务器在重写数据包时会人为地保持连接打开状态,以便移动用户比服务器确实收到确认数据包更快得到ACK数据包。

这是偷偷摸摸的,但有时移动networking是邪恶的。