Ajax调用:服务器运行时和客户端等待时间之间的巨大差异

时间:2014-06-04 14:13:33

标签: ajax rest tomcat jprofiler

我有两个REST端点在网站中驱动一些导航。两者都创建了几乎相同的响应,但是其中一个直接从数据库中获取数据,而另一个必须首先要求搜索引擎(solr)获取一些数据然后执行数据库调用。

如果我通过JProfiler分析两个端点,那么第二个端点的运行时间(大约60%)会更高(大约31ms与53ms)。这是预期的。

个人资料结果:

enter image description here

如果我从客户端查看相同的ajax调用,我会得到一个非常不同的图片。

  • 两次通话的速度越快,等待时间约为146毫秒,网络时间
  • 两次调用中较慢的一次需要大约1.4秒等待和网络

enter image description here

enter image description here

前端计时是通过chrome开发人员工具测量的。服务器是在STS 3.2中运行的tomcat 7.0.30。客户端和服务器位于同一系统上,db和solr是外部的,因此tomcat和浏览器之间不应存在网络延迟。作为旁注:响应速度越快,有效负载越大(2.6 vs 4.5 kb)。

我不知道为什么两个呼叫中较慢的呼叫需要大约60%的服务器时间,但总计接近1000%"前端时间"。

问题是:我有什么方法可以找出这种时间差异的起源吗?

1 个答案:

答案 0 :(得分:2)

默认情况下,JProfiler中的CPU视图显示" Runnable"线程状态。如果线程从套接字连接读取数据或等待某些条件,则该时间不包含在" Runnable"线程状态。

在CPU视图的右上角有一个线程状态选择器。如果您将其更改为"所有状态",您将获得可以与浏览器的挂钟时间进行比较的时间。