我有两个REST端点在网站中驱动一些导航。两者都创建了几乎相同的响应,但是其中一个直接从数据库中获取数据,而另一个必须首先要求搜索引擎(solr)获取一些数据然后执行数据库调用。
如果我通过JProfiler分析两个端点,那么第二个端点的运行时间(大约60%)会更高(大约31ms与53ms)。这是预期的。
个人资料结果:
如果我从客户端查看相同的ajax调用,我会得到一个非常不同的图片。
前端计时是通过chrome开发人员工具测量的。服务器是在STS 3.2中运行的tomcat 7.0.30。客户端和服务器位于同一系统上,db和solr是外部的,因此tomcat和浏览器之间不应存在网络延迟。作为旁注:响应速度越快,有效负载越大(2.6 vs 4.5 kb)。
我不知道为什么两个呼叫中较慢的呼叫需要大约60%的服务器时间,但总计接近1000%"前端时间"。
问题是:我有什么方法可以找出这种时间差异的起源吗?
答案 0 :(得分:2)
默认情况下,JProfiler中的CPU视图显示" Runnable"线程状态。如果线程从套接字连接读取数据或等待某些条件,则该时间不包含在" Runnable"线程状态。
在CPU视图的右上角有一个线程状态选择器。如果您将其更改为"所有状态",您将获得可以与浏览器的挂钟时间进行比较的时间。