2012-04-12 63 views
0

我们正在制作一个涉及服务器(tomcat,apache,linux)和多个移动客户端(Android,iPhone,Windows,Nokia J2ME)的应用程序。使用HTTP请求的连接速度

通常,客户端和服务器将使用http进行通信。

我想知道客户端从http请求中下载和上传的速度。

理想情况下,我不想上传文件并下载文件来提供这些速度。我假设在HTTP协议层面可能会有一些东西可以给我这个或者网络的一些较低层。

回答

0

如果http连接首先进入Apache服务器,则可以使用Apache Bench进行各种负载测试。它带有apache,可以通过如下方式调用。

假设我们希望看到雅虎能多快的速度处理100个请求,与同时运行最多10个请求:

ab -n 100 -c 10 http://www.yahoo.com/ 
+0

如果我没有得到它错了,apache的板凳将需要在运行托管我客户端,但影响我想计算留在服务器上的速度。为了补充这一点,将所有这些信息放在每个客户端上将是一件麻烦事。 – ABJ 2012-04-12 11:17:55

2

如果只有它是那么简单。

即使网络的带宽and latency定义得非常好,实际吞吐量也将受到拥塞窗口以及端点在建立慢启动阈值时的限制。这些会影响吞吐量20倍或更多。

HTTP中没有任何内容会提供这些指标。一些TCP堆栈将暴露有限的吞吐量信息(如iftop,iptraf所使用)。

但是,如果您确实想要收集有关HTTP吞吐量的有用指标,那么您需要开始在整个网络上推送数据 - 请参阅yahoo boomerang的实现。

0

HTTP不处理连接速度。虽然我可以想象一些解决方案涉及一些估计连接速度的HTTP(反向)代理,并设置自定义标头来传递此信息。您还需要将不同连接的统计信息与特定客户端相关联。我还没有看到一个现成的解决方案。

还要注意的是

  1. 网络流量可以缓冲或成形以便下载速度可以取决于传送的数据或网络的先前的负载量。所以即使下载文件也不准确。
  2. 传输的数据量取决于协议级别(HTTP中包装的有效载荷包装在TZ包装的TCP中封装的gzip中)。你想测量哪一个?或者你想用这个测量的速度达到什么目的?
+0

这是一家电信公司的应用程序套件。所以我们要做的是,如果速度很慢,我们会建议他们移动到不同的小区/站点(位置)以获得更好的速度。 – ABJ 2012-04-12 11:14:14

+0

如果这涉及到用户体验,那么可能只是测量响应时间?假设您的应用程序有一些通过JavaScript发送的请求,那么我认为可以测量它们实际采用的时间(例如,通过使用一些可以透明地收集统计信息的调用包装)。然后使用这些数据作为衡量响应性的指标。这样可以在客户端完全实现。 – 2012-04-13 06:09:09

0

我已经看到了一些真实用户监控(RUM)工具,可以被动地做到这一点(他们从在数据中心中的服务器的SPAN端口或网络TAP盈饲料)

有可能是将他们生成的数据整合到您的应用程序中的方式,但我不确定这很容易,或者可能给出延迟和带宽在移动网络上“动态”更改的方式。

我想专注于真实的东西是应用程序,多少数据在网络上传播的设计,如何可以将它最小化等

其他需要考虑的事情是你是否能提供一个解决方案这使得一些应用在电信运营商的持久性有机污染物(一些电信运营商的路由他们所有的塔到中央流行,其它的有多个持久性有机污染物)