如何查明为什么一个特定的资源(图片或图书馆)减慢页面加载

我们有一个小型的networking(高峰时间可能有15个用户,大约30个设备)pipe理互联网连接和电话线路。

networking的主要用途是让用户访问他们pipe理业务(客户,销售,发票等)的基于Web的外部托pipe数据库接口。 这个基于Web的数据库接口是一个php / mysql应用程序,在过去一年半的时间里发展起来。 作为主要的(如果不仅仅是)程序员,我可以从我们的主机解决scheme,源代码到技术select,访问有关此应用程序和我们networking的所有信息。

几个月前,我们注意到使用数据库接口产生的错误减less了5%。 我的意思是,大部分的点击都会在一到两秒内传送内容,然后,有时候,其中一次点击最多需要一分钟才能加载。

令我眼花缭乱的是

  • 它似乎不是真正的页面内容。 一次又一次加载相同的页面将在95%的时间内工作,一次点击有时会从1000%到2000%的时间加载。 一遍又一遍地加载不同的页面将会有相同的结果。
  • 从外部访问时,基于Web的界面不会变慢 。 也就是说,只有在我们的本地networking之后使用才会变慢。
  • 其他网页似乎不会放慢速度,但是停止滞后的页面并重新加载它将会正常工作, 这让我认为它发生了几秒钟,阻止了在此阈值内发生的所有点击,而不是在两秒之后发生的点击
  • 该网站使用jquery和jquery-ui,以及一些其他库(jQuery的cookie主,xdate)。 如果从我们的服务器或直接从jquery和ajax.googleapis加载缓慢发生

面对这一切,我咨询了networking专业人员,最后我们改变了我们的networking设备,现在我们使用思科asa-5505防火墙和可pipe理的思科Catalyst交换机。

  • 之前,我们注意到ping到google.com有时会超时或最多需要13000 ms才能加载,而通常情况下,我们在20-30ms
  • 我们也通过咨询我们的isp来注意到,我们每个月有800GB的上传量! 我们确实pipe理照片和繁重的文件,但是如果远离正常使用的话,则是800GB。 一度,我们认为高networking上传stream量可能会阻止页面加载资源。 我们可以看到,我们的isp的历史,缓慢和大规模的上传似乎在同一时间大致发生。 我不能毫不怀疑地发生第一次,他们似乎在同一周发生。
  • 我们显然有很多数据包丢失的错误
  • 我无法确定缓慢影响与否的协议。 我没有直接经历下载失败,也没有任何用户抱怨他们的下载失败,但是通过netbeans上传文件到ftp会受到影响。 但是,用户使用transmit将文件传输到我们的客户端,并且我还没有抱怨文件没有被正确上传或客户端接收到损坏的文件。

不幸的是,仅仅因为我没有投诉,并不意味着没有发生,因为那时与用户的沟通有些紧张。 我想说慢networking是因为[双关意图]。

当我们聘请的专家来安装新的networking时,他们做了一些configuration和监控,现在我们的ping恢复正常了,丢包的错误发生得很less,到了我们认为只有这些正常的数据包在互联网上丢失。 另外从我们可以看到的(只有几天),巨大的上传已经停止。

但是,5%的点击次数仍然需要大量的时间来加载。

我试着用萤火虫的net标签进行debugging,看看网站的哪个部分加载速度慢。 服务器本身的响应时间在200-800毫秒之间,具体取决于页面的复杂程度,这看起来没问题。 大多数的图像加载好,图书馆,但是,当发生缓慢,一个或多个图像或图书馆将永久等待加载之前。 它并不总是相同的图书馆或图像

我的想法是,不知何故,加载图像和库来显示页面时,networking负载将阻止资源到达他们的目的地正确。

我怎样才能确定什么是防止一个特定的资源,是一个图像或一个js库,加载?

我缺乏使用wireshark或其他高级(从我的谦虚angular度来看)networking工具的技术技能,但是如果必须的话,我会学习它。 这就是说,现在监测似乎不相关,我不希望看到它缓慢,我知道这是缓慢的。 我想知道什么阻止资源到达我们的本地networking中的目标计算机

所以,如果没有真正进入你的networking并且与你进行详细的诊断,这里的答案可能更多的是“指向你的方向”,看看它是否有效。

这就是说,在处理这种事情时,我采取了一种奥卡姆的剃刀办法。

你说:

“基于networking的界面在从外部访问时不会变慢,也就是说,只有在我们的本地networking之后才能使用。”

这里,如果真的是准确的话,那就是关键。

这个问题应该在那个“本地networking”的某个地方。 它不在外部托pipe的服务器/应用程序上,否则可能会从另一个位置复制相同的问题。

那么在哪里? 你已经交换了一些networking设备,看起来无济于事。

这是我build议你做的,这听起来可能很简单,但是从networking最远的外部点向后工作:

  1. 拿一台从未在本地局域网中使用的笔记本电脑,不属于域等,直接连接到本地networking的ISP。 直接是关键。 直接在ISP的networking上放置一台笔记本电脑,而不需要防火墙或类似的设备,然后看看你会得到什么样的响应/性能,并将它与已知良好的外部设置进行比较。
  2. 如果在步骤#1中没有看到问题,请将笔记本电脑移回一层,直接连接到ASA防火墙,然后通过防火墙重新testing。
  3. 如果#2没有问题,则返回另一层,这次是在pipe理型交换机之后。
  4. 如果#3没有问题,那么你知道这不是一个networking问题。

等等等等(尝试一个有外部“问题”的客户等等),直到你至less可以客观地说出什么问题发生在哪里,即使你不知道为什么或者特别是什么导致了这个问题特定的“层”。 然后,如果你愿意的话,你可以开始更深入的了解这个特定的“层”。

您可能需要使用nmap(或wireshark为例)来检查本地networking,它可以帮助您find有病毒的windows计算机,并发送成千上万的垃圾邮件arp请求,或者使用一个bittorrent客户端的用户或任何可以使您的本地networking或您的互联网上传

另一种select是大多数ISP都远远不够完美。 。 。 也许有时ISP有一些丢包或上传稳定性问题。 在互联网上安装一个监控工具,例如吸烟和监控一个目标,可以帮助你看到这一点(丢包,上传缓慢,ping慢),也可以让你看到什么时候发生(每次john doe在办公室,插上他电脑到networking?)。