如何提高http连接成功率?

问题

丢包、错包、乱包

高延迟

响应数据回来时间长,甚至大于客户端等待时间

带宽小

每次能够通信的内容较少,数据包越大受影响可能越大

网络断续

网络经常断开又连接

优化处理

  • 采用TCP协议、实现长连接,采用长连接池,节省握手时间
  • 采用ProtocolBuffer, 减少冗余数据
  • 弃用DNS,直接使用IP,减少了请求DNC服务查询IP的时间,避免被DNS劫持
  • 加入重试机制,提高成功率
  • 使用Http 2.0,压缩头部,长连接更加彻底,支持推送,支持Multiplexing(支持一个TCP连接上同时实现多个请求和响应)
  • 超时时间设置可以适当延长
  • 使用https: https对于http 主要在前面的握手阶段次数多,因为增大了丢包的概率。https因为过程中,server端会把ssl证书公钥给客户端,证书很大,可能会引起分包,也由概率把次数变得更多。可以把reve buffer都精良根据证书调整到正确的大小。
  • 交互次数上:提供一个预热的接口(pre https, pre httpdns),后面保持长连接和心跳,后面正真正的业务上来的时候就hi体验好一些。交互内容大小:可以预先把证书下载到客户端(定期刷新,安全和效率的一个平衡。
  • 断线重连:这可能时最重的一个特新,因为在无线网络中有太多的原因导致数据连接中断了。这里可以使用CDN(CDN是构建在数据网络上的一种分布式的内容分发网。CDN的作用是采用流媒体服务器集群技术,克服单机系统输出贷款及并发能力不足的缺点,可极大提升系统支持的并发流数目,减少或避免单点失效带来的不良影响。
  • 由于创建连接是一个非常昂贵的操作,所以应尽量减少数据连接的创建次数,且在一次请求中应精良以批量的方式执行任务。如果多次发送小数据包,应该保证在2秒以内发送出去。在短时间内访问不同服务器时,尽可能的复用无线连接。
  • 控制数据包大小不超过1500,避免分片。包括逻辑链路控制分片、GGSN分片、以及IP分片。其中,当数据包大小超过GGSN所允许的最大大小时,GGSN的处理方式有以下三种:分片、丢弃、和拒绝。
  • 优化TCP socket参数,包括:是否关闭快速回收、初始化RTO、初始化拥塞窗口、socket缓存大小、Delay-ACK,Selective-ACK、TCP_CORK、拥塞算法(westwood/TLP/cubic)等。做这件事的意义在于:由于2G/3G/4G/WIFI/公司内网等接入网络的Qos差异很大,所以不同网络下为了取得较好的服务质量,上述参数的取值差异可能会更大。
  • 前后端采用gzip方式请求和响应,前端在请求header添加:“content-encoding"为”gzip",h后端也要开启gzip,才能生效,相比不采用gzip的请求方式,能节省流量,可以快速响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【EI会议征稿通知】第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)

第五届计算机信息和大数据应用国际学术会议(CIBDA 2024) 2024 5th International Conference on Computer Information and Big Data Applications 第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)将于2024年3月22-24日在…

DC-证书颁发机构(23国赛真题)

2023全国职业院校技能大赛网络系统管理赛项–模块B:服务部署(WindowServer2022) 文章目录 题目配置步骤在DC1服务器上安装证书颁发机构。定义名称:CSK2023-ROOTCA。证书颁发机构有效期:3 years。为chinaskills.com域内的web站点颁发web证书。当前拓扑内所有机器必须信任该…

运行VUE提示找不到模块validate-engines.js...

原来好好的,突然提示找不到模块validate-engines.js,CMD命令行输入npm -v不是内部或外部命令,node -v可以查看到版本号。 解决: 1. 卸载nodejs,重新下载安装文件:下载nodejs 2. 到目录:C:\Us…

深度学习与神经网络Pytorch版 3.2 线性回归从零开始实现 1.生成数据集

3.2 线性回归从零开始实现 目录 3.2 线性回归从零开始实现 一 ,简介 1. 原理 2. 步骤 3. 优缺点 4. 应用场景 二 ,代码展现 1. 生成数据集(完整代码) 2. 各个函数解析 2.1 torch.normal()函数 2.2 torch.matmul()函数 2.3 d2l.plt.scatter(…

18.通过telepresence调试部署在Kubernetes上的微服务

Telepresence简介 在微服务架构中,本地开发和调试往往是一项具有挑战性的任务。Telepresence 是一种强大的工具,使得开发者本地机器上开发微服务时能够与运行在 Kubernetes 集群中的其他服务无缝交互。本文将深入探讨 Telepresence 的架构、运行原理,并通过实际的案例演示其…

在mgre环境下配置ospf

实验规则如上图所示: 首先规划IP 配置缺省路由,使得公网全网可达 此处在r1上进行配置: 由此可以实现,公网已经全网可达: 其次,再分配 全连的MGRE网段,全连的MGRE网段每个路由器都是中心站点&…

基于springboot招聘信息管理系统源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括招聘信息管理系统的网络应用,在外国招聘信息管理系统已经是很普遍的方式,不过国内的线上管理系统可能还处于起步阶段。招聘信息管理系统具有招聘信息管…

配置nginx作为静态文件托管服务器

下载nginx windows上是个压缩包 解压后, 使用命令行输入 nginx 进行启动 nginx -s stop 进行停止 nginx -s status 查看状态 可以配置一下环境变量 主要是配置文件, windows的nginx配置文件在 conf文件夹下 在http标签下 添加如下配置 其他地方不用更改,保持原样即可, 以…

python使用activemq库ActiveMQClient类的连接activemq并订阅、发送和接收消息

引入activemq模块:from activemq import ActiveMQClient from activemq import ActiveMQClient 是一个Python的导入语句,它从activemq模块中导入了ActiveMQClient类。 解释一下各个部分: from activemq: 这表示我们正在从一个名为activemq…

git diff查看比对两次不同时间点提交的异同

git diff查看比对两次不同时间点提交的异同 用 git diff命令: git diff commit-id-1 commit-id-2 不同commit-id在不同的时间点提交产生,因为也可以认为git diff是比对两个不同时间点的代码异同。 git diff比较不同commit版本的代码文件异同_git diff c…

2024年航海制造工程与海洋工程国际会议(ICNMEME2024)

一、【会议简介】 2024年航海制造工程与海洋工程国际会议(ICNMEME2024)旨在将研究人员、工程师、科学家和行业专业人士聚集在一个开放论坛上,展示他们在导航制造工程与海洋工程领域的激励研究和知识转移理念。然而,我们也认识到,工程师的未来…

并发编程的两个案例

并发编程一直是开发过程中非常有挑战力的部分,不仅需要保证数据的正确性,也要考虑这个性能是可以接受的,既然已经考虑并发这个事情,说明它的瞬间流量已经不低了。我们一般通过加锁的方式保证数据的正确性,那这个加锁的…

【C语言】swap()函数为什么不能直接交换int整型数据

常见错误: void swap(int a,int b);int main(){int a2,b3;swap(a,b);printf("%d",a,b);return 0; }void swap(int a,int b){int ta;ab;bt; } 错误原因:对 函数参数的知识点不够熟悉。 在函数中参数传递分为三种情况: 参数可以使用传…

代码随想录算法训练营第二十天 |654.最大二叉树,617.合并二叉树,700.二叉搜索树种的搜索,98.验证二叉搜索树(待补充)

654.最大二叉树 1、题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 2、文章讲解:代码随想录 3、题目: 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的…

petalinux2022.2启动文件编译配置

安装必要运行库: sudo apt-get install iproute2 gawk python3 python sudo apt-get install build-essential gcc git make net-tools libncurses5-dev tftpd sudo apt-get install zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git-core diffstat sudo apt-ge…

react实现滚动到顶部组件

新建ScrollToTop.js import React, { useState, useEffect } from react; import ./ScrollToTop.css;function ScrollToTop() {const [isVisible, setIsVisible] useState(true);// Show button when page is scorlled upto given distanceconst toggleVisibility () > {…

处理Servlet生命周期事件

处理Servlet生命周期事件 接收关于 Servlet生命周期事件通知的类称为事件侦听器。这些侦听器实现Servlet API中定义的一个或多个servlet事件侦听器接口。侦听器类的逻辑分类如下: servlet请求侦听器Servlet上下文侦听器HTTP会话侦听器1. servlet请求侦听器 servlet请求侦听器…

专业138总分420+中国科学技术大学843信号与系统考研经验中科大电子信息通信

**今年中科大专业课843信号与系统138分,总分420顺利上岸,梦圆中科大,也是报了高考失利的遗憾,总结一下自己的复习经历,希望可以给大家提供参考。**首先,中科大843包括信号与系统,和数字信号处理…

网络隔离场景下访问 Pod 网络

接着上文 VPC网络架构下的网络上数据采集 介绍 考虑一个监控系统,它的数据采集 Agent 是以 daemonset 形式运行在物理机上的,它需要采集 Pod 的各种监控信息。现在很流行的一个监控信息是通过 Prometheus 提供指标信息。 一般来说,daemonset …

线性代数------矩阵的运算和逆矩阵

矩阵VS行列式 矩阵是一个数表,而行列式是一个具体的数; 矩阵是使用大写字母表示,行列式是使用类似绝对值的两个竖杠; 矩阵的行数可以不等于列数,但是行列式的行数等于列数; 1.矩阵的数乘就是矩阵的每个…