关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。


环境:景安快云服务器(听说很垃圾,但是公司买的,我也刚来),CentOS-6.8-x86_64,Apache,MySQL5.1,PHP5.3.

问题:现公司有一个php系统,需要重复向后台发送ajax请求,但是会出现pending状态,我现在需要解决这个问题,或者说找到问题在服务器,代码,还是客户端,然后有个交代,但是不知道从何下手,毕竟还是it萌新啊。。

效果如图。两个特点,1:就是越往后的请求,pengding时间越长,且其中绝大部分时间被stalled占用(此问题网上有相关文章,但是没有解决办法,我后文会贴出来);2:就是这个图我是设置的1s请求一次,一次又三个请求,如果设置的时间长一点比如7s,这个现象就会出现得迟。

我的解决过程: 程序员表示没想到回来解决这个问题。。。百度,谷歌。

我首先找到的有价值的文章是这篇:关于请求被挂起页面加载缓慢

链接: http://kb.cnblogs.com/page/513237/

文章的结论是,没有找到解决办法,但是大致描述了一个原因就是tcp连接的问题,而且跟chrome浏览器有关,关于socket这些,不是太了解,但是知道跟tcp握手有关。

好,大致文章说了跟chrome有关,于是我又下了火狐来测试,依然有这个问题,所以虽然这篇文章很好,可能跟我这个无关吧我想。

然后我又找到一篇文章:chrome的timeline中stalled问题解析

链接:http://www.tuicool.com/articles/qQVj6nb

这篇文章的问题也和我差不多,耗时大部分在stalled,然后他通过抓包工具,证明是tcp的
连接出了问题,跟上文一样,然后结论是网络问题或者服务端问题。然后我也去下载了同样的抓包工具,出现得效果也差不多。

当然,如果是网络问题,我就有交代了,但是还有可能是服务端问题,因此还得继续找。

然后虽然我确实看不懂这个抓包工具里面的信息,不过明显的报错我还是能看出来,也就是 TCP Previous segment not captured,这个错误出现频率很高,我想这应该就是跟tcp链接异常有关的报错,因此我又找了相关的文章,找到了这篇:抓包分析之 “TCP Previous segment not captured”;

链接:https://my.oschina.net/moooofly/blog/804568

文章描述了种种原因,就列出了一种,并贴出了相关的抓包图,我一对比,发现跟我的几乎一样,但是我看不懂各个信息的真正意思,所以也只能估计就是这个原因

文中的抓包图:

我的抓包图:

这张图全是错误,但是我都看不懂。

好,总结一下,以上就是我解决问题的过程,大牛们做个参考,我现在想知道,这个问题到底出在哪一端,好有个交代。

原文地址:https://www.cnblogs.com/jpfss/p/8963766.html

时间: 2024-08-28 19:58:48

关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。的相关文章

关于iframe和div窗口中ajax请求200状态时执行的回调问题

上一篇说了在ajax回调里面处理iframe窗口的刷新问题,这一篇记录一下遇到的一个分别在iframe和div窗口中ajax请求200状态时执行的回调问题. 我们先来看一下ajax请求的写法(这里使用了jQuery) function check_pass(uid) { $.ajax({ type: "GET", url: siteurl, dataType: "json", data:{ "c":"api", "m

ajax请求常见状态码以及产生的原因

通常前后端使用ajax交互时,客户端向服务器发送请求时,然后服务器向我们返回状态码.状态码就是告诉我们服务器响应的状态,由3位数字组成,其中第一位数字表示响应类别,响应类别从1到5分为五种 . 状态码 响应类别 原因 1xx 信息性状态码(Informational) 服务器正在处理请求 2xx 成功状态码(Success) 请求已正常处理完毕 3xx 重定向状态码(Redirection) 需要进行额外操作以完成请求 4xx 客户端错误状态码(Client Error) 客户端原因导致服务器无

js实现AJAX请求

摘自:http://www.myexception.cn/javascript/1448345.html AJAX:全称“Asynchronous JavaScript and XML”(异步的JavaScript与XML) AJAX请求的特点: 1.不刷新页面 2.服务器仅返回需要的数据 AJAX引擎:XMLHttpRequest此对象是浏览器中的内置对象,在目前的所有浏览器中都支持此对象. IE中获取此对象: if(window.ActiveXObject){            var

Ajax请求全局配置

摘要: jQuery已经成为项目中最常见的js库,也是前端开发最喜欢使用的库.下面是在项目中封装了jQuery的Ajax,分享给大家. 代码: // ajax 请求参数 var ajaxSettings = function(opt) { var url = opt.url; var href = location.href; // 判断是否跨域请求 var requestType = 'jsonp'; if (url.indexOf(location.host) > -1) requestTy

一个 TCP 连接可以发多少个 HTTP 请求?

作者 | 松若章 来源 | https://zhuanlan.zhihu.com/p/61423830 曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式.什么顺序.建立了多少连接.使用什么协议被下载下来的呢? 要搞懂这个问题,我们需要先解决下面五个问题: 现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况

TCP连接与HTTP请求

一道经典面试题: 从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式.什么顺序.建立了多少连接.使用什么协议被下载下来的呢? 一个 TCP 连接可以发多个 HTTP 请求? 要搞懂这个问题,需要先解决下面五个问题: 现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开? 一个 TCP 连接可以对应几个 HTTP 请求? 一个

AJAX请求时status返回状态明细表

AJAX请求时status返回状态明细表 readyState的五种状态2010-03-04 18:24对于readyState的五种状态的描述或者说定义,很多Ajax书(英文原版)中大都语焉不详 在<Pragmatic Ajax A Web 2.0 Primer >中偶然看到对readyStae状态的介绍,感觉这个介绍很实在-- 比较理想的解释方法应该以"状态:任务(目标)+过程+表现(或特征)"的表达模式来对这几个状态进行定义 在<Pragmatic Ajax A

原生与jQuery封装的ajax请求数据及状态码

原生Ajax 请求数据 btn.addEventListener('click',function(){ if(window.XMLHttpRequest){ var xhr = new window.XMLHttpRequest(); }else{ //兼容IE浏览器 var xhr = new ActiveXObject('Microsoft.XMLHTTP'); } //请求方式get/post //请求URL //ture 异步请求:false 同步请求 xhr.open('get','

ajax请求状态码为0的解决办法

原文链接:https://blog.csdn.net/changqing5818/article/details/53932463 前言 今天遇到个奇怪的问题,使用JQuery的ajax请求,后台的Controller层也接收到请求了,一切处理很正常,但是很奇怪,浏览器Debug发现,responseText是"error",状态码是0而不是200. 请求源码如下 $.ajax({ type: "POST", url: targetUrl, cache: false