我们正在制作一个涉及服务器(tomcat,apache,linux)和多个移动客户端(Android,iPhone,Windows,Nokia J2ME)的应用程序。
通常,客户端和服务器将使用http进行通信。
我想知道客户端从它发出的http请求的下载和上传速度。
理想情况下,我不想上传文件并下载文件来提供这些速度。我假设在HTTP协议级别可能有一些东西可以给我这个,或者网络的一些较低层。
答案 0 :(得分:2)
如果只是那么简单。
即使网络的带宽and latency定义得非常好,实际吞吐量也会受到拥塞窗口的限制,以及终点在建立慢启动阈值的位置。这些可能会影响吞吐量20倍或更多。
HTTP中没有任何内容可以为这些提供指标。某些TCP堆栈将公开有关吞吐量的有限信息(由iftop,iptraf使用)。
但是,如果您真的想收集有关HTTP吞吐量的有用指标,那么您需要开始在网络上推送数据 - 请查看yahoo boomerang以了解实施情况。
答案 1 :(得分:0)
如果http连接首先进入Apache服务器,您可以使用Apache Bench进行各种负载测试。它带有apache,可以使用以下内容调用。
假设我们想看看Yahoo有多快处理100个请求,最多同时运行10个请求:
ab -n 100 -c 10 http://www.yahoo.com/
答案 2 :(得分:0)
HTTP不处理连接速度。虽然我可以想象一些解决方案涉及一些HTTP(反向)代理,它估计连接的速度并设置自定义标头以传递此信息。您还需要将不同连接的统计信息与特定客户端相关联。我还没有看到现成的解决方案。
另请注意
答案 3 :(得分:0)
我见过一些可以被动地执行此操作的真实用户监控(RUM)工具(他们从SPAN端口或数据中心服务器前面的网络TAP获取数据)
可能有一些方法可以将他们生成的数据集成到您的应用程序中,但我不确定它是否容易,或者假设延迟和带宽可以在移动网络上“动态”改变,这是正确的。
我想真正关注的是应用程序的设计,通过网络传输的数据量,以及如何最小化它等等。
需要考虑的另一件事是,您是否可以提供一种解决方案,允许某些应用程序托管在电信公司的POP中(一些电信公司将其所有塔楼路由回中央流行音乐,其他人拥有多个POP)