精华内容
下载资源
问答
  • 我之前在很多文章中分享过我们流媒体服务器如何优化直播体验,详细讲解了各部分造成低延迟和卡顿的原因和相应的优化原理。实际上,音视频的直播系统是一个复杂的工程系统,要做到非常低延迟的直播,需要复杂的系统...

    我之前在很多文章中分享过我们流媒体服务器如何优化直播体验,详细讲解了各部分造成低延迟和卡顿的原因和相应的优化原理。实际上,音视频的直播系统是一个复杂的工程系统,要做到非常低延迟的直播,需要复杂的系统工程优化和对各组件非常熟悉的掌握。这里面我们再分享几个简单而常用的调优技巧,大家要是遇到类似的问题可以先对照解决。

     

    编码优化

    1、编码器一般都会有码控造成的延迟,一般也叫做初始化延迟或者视频缓存检验器 VBV 的缓存大小,把它当成编码器和解码器比特流之间的缓存,在不影响视频质量的情况下可以将其设置得尽可能小也可以降低延迟。

    2、确保 Codec 开启了最低延迟的设置。Codec 一般都会有低延迟优化的开关,对于 H.264 来说其效果尤其明显。如果你的视频不是使用 H.264 来编码压缩的,确保没有使用到 B 帧,它对延迟也会有较大的影响,因为视频中 B 帧的解码依赖于前后的视频帧,会增加延迟。

    3、不要使用视频 MJPEG 的视频压缩格式,至少使用不带 B 帧的 MPEG4 视频压缩格式(Simple profile),甚至最好使用 H.264 baseline profile(X264 还有一个「-tune zerolatency」的优化开关)。这样一个简单的优化可以降低延迟,因为它能够以更低的码率编码全帧率视频。

    传输协议优化

    1. 在服务端节点和节点之间尽量使用 RTMP 而非基于 HTTP 的 HLS 协议进行传输,这样可以降低整体的传输延迟。这个主要针对终端用户使用 HLS 进行播放的情况。

    2. 如果终端用户使用 RTMP 来播放,尽量在靠近推流端的收流节点进行转码,这样传输的视频流比原始视频流更小。

    3. 如果有必要,可以使用定制的 UDP 协议来替换 TCP 协议,省去弱网环节下的丢包重传可以降低延迟。它的主要缺点在于,基于 UDP 协议进行定制的协议视频流的传输和分发不够通用,CDN 厂商支持的是标准的传输协议。

    以我们现有的科技水平,延迟的情况是不可避免的,我们流媒体服务器也在尽力解决这个问题,目前以上的两种延迟优化方法都可以在我们流媒体服务器上尝试解决。

     

    展开全文
  • 服务器延迟原因汇总

    千次阅读 2015-05-10 19:24:04
    1.Full GC导致CPU被垃圾回收占用 jstat -gcutil -h5 [pid] 1s ... 看游戏内监控grep 'message interval=[0-9]\{4,\}.' /data/log/game/546/game 看哪个协议占用较高 3.带宽达到上限 4.网卡吞...

    1.Full GC导致CPU被垃圾回收占用 

    jstat -gcutil -h5 [pid] 1s 

    2.业务逻辑耗时较大,比如登陆登出逻辑,看CPU ,top -p pid H 看哪根线程CPU占用较高

    看游戏内监控 grep 'message interval=[0-9]\{4,\}.' /data/log/game/546/game 看哪个协议占用较高

    3.带宽达到上限

    4.网卡吞吐占上限

    5.MySQL读写达到上限,慢查询

    6.负载load overage 值

    7.某天突然的卡,可能是某一天新上了什么功能或者开了什么活动,导致了新的有问题的代码被激活或者消息量急剧飙升

     

    展开全文
  • 降低请求延迟

    千次阅读 2018-03-12 13:19:27
    我们没有办法降低单个网络请求的延迟, 不过可以通过一些技术来降低多个请求的延迟. 本节将会介绍如何降低应用的网络请求所消耗的潜在时间 对于应用所需的一小块数据来说, 每次都建立并关闭一条 TCP 连接是非常不...

    HTTP请求过程中会有哪些网络时延?

     

     

    域名解析:域名解析是进行网络访问的第一步,把域名识别为TCP认识的IP地址。这步往往会因为域名解析服务的质量造成诸多问题,我在实际的工程实践中遇到的最常见的问题就是选择的域名服务商质量不好或者客户端本身设置的域名解析服务地址错误导致域名解析慢或者失败。不过现在对于大多数的HTTP客户端都有一个小的DNS缓存,用来保存近期所访问站点的IP地址,可以有效的缓解此问题。

    接下来,客户端会向服务器发送一条TCP连接请求,并等待服务器回送一条响应。每条新的TCP连接都有连接建立时延(通常最多只有一两秒钟),对于单线程浏览器而言,如果有数百个并发的HTTP事务的话,可想而知时间叠加值也会很大。

    一旦连接建立起来,客户端和服务器端就会通过这个建立的TCP管道来进行请求的收发了,这些TCP的网络时延的大小取决于硬件速度、网络和服务器的负载,请求和响应报文的尺寸,以及客户端和服务器之间的距离。请参见我的文章《构建高性能服务的考量》。

    TCP相关时延

    TCP连接建立握手

    wKioL1UhMc3RLTTHAACWKdyGkGs865.jpg

    建立一条新的TCP连接时,TCP两端之间会交换一系列的IP分组,如果连接只是用来传送少量的数据,相比而这种建立连接的过程会大大影响HTTP的性能。

    通常HTTP的事务都不会交换太多数据,SYN/SYN+ACK两次握手会产生一个可测量的时延,但第三次握手——TCP连接ACK分组通常都足够大,可以承载整个HTTP的请求报文(现代的TCP协议栈都允许客户端在这个确认分组中发送数据),而且很多HTTP服务器响应报文都可以放到一个IP分组中去。

    可以看出,小的HTTP事务可能会在TCP建立连接上花费50%的时间之多。所以我们现实中常常会有重用HTTP连接的需求。

    TCP的延迟确认机制

    我们都知道因特网自身是无法保证可靠的分组传输的,所以TCP实现了自己的确认机制来确保数据的传输成功。在这种确认机制中使用的就是确认报文,由于确认报文很小,于是TCP将要返回的确认信息与输出的数据分组结合在一起发送可以更有效的利用网络。为了增加确认报文找到同向传输数据分组的可能性,很多TCP协议栈都实现了一种“延迟确认”算法——在一个特定的窗口时间(通常是100-200毫秒)内将输出确认放在缓冲区中,以寻找能够捎带它的输出数据分组,否则超出这个时段就将确认数据单独发送。

    但是HTTP具有双峰特征的请求——应答行为降低了捎带信息的可能。当希望有相反方向回传分组的时候,偏偏没有那么多。通常,延迟确认算法会引入相当大的时延,所以我们应该依据相应的操作系统的不同调整或者禁用延迟确认算法。

    注:在对TCP协议栈的任何参数进行修改之前,一定要对自己做什么有清醒的认识。TCP中引入这些算法的目的是防止设计欠佳的应用程序对网络造成破坏。所以修改这些配置后都应该保证应用程序不会引发这些算法所要避免的问题。

    TCP慢启动(拥塞控制)

    为了更好的保护网络,TCP慢启动限制了一个TCP端点在任意时刻可以传输的分组数。TCP数据传输起初会限制传输速度(传输分组数),如果数据成功传输,会随着时间的推移提高传输速度(传输分组数)。如果某个HTTP事务有大量数据要发送,是不能一次将所有分组都发送出去的。必须依赖慢启动逐渐的打开拥塞窗口。

    由于存在这种拥塞控制特性,所以新连接的传输速度会比已经交换过一定量数据的连接慢一些。这样又需要我们从重用HTTP连接(持久连接)的角度去考虑提高传输性能。

    Nagle算法与TCP_NODELAY

    如果TCP连接总是发送大量包含少量数据的分组,网络的性能就会严重下降。Nagle算法就是试图在发送一个分组之前,将大量TCP数据绑定在一起发送(鼓励发送全尺寸的段,比如以太网上的段大小是1500字节,否则就进行缓存,要么当所有其他分组都被确认之后,Nagle算法才允许发送非全尺寸的分组),以提高网络效率。

    Nagle算法会引发几种HTTP的性能问题。比如小的HTTP报文可能无法填满一个分组,所以要缓存等待起来,要么就等待确认分组的抵达(确认分组的时延大概在100-200毫秒)。

    所以HTTP应用程序常常会在自己的协议栈中设置参数TCP_NODELAY,禁用Nagle算法来提高性能。

    TIME_WAIT累积与端口耗尽

    关于TIME_WAIT状态的解释请看我的这篇博文《网络编程释疑之:TCP的TIME_WAIT状态在服务器开发中的影响?》,之前TIME_WAIT时间的设置为2分种之多是因为早期路由器的处理速度还比较慢,但是现在高速路由器的使用已经大大弱化了这个问题,所以对于web服务器来说可以通过操作系统设置来减小TIME_WAIT状态的持续时间,否则如果服务器存在大量的TIME_WAIT状态会大大影响服务器的性能。至于端口耗尽的情况则是针对少量客户端主机对web服务器进行基准测试时可能出现的问题,与TCP连接四元组有关。

     

    -----======================分割线=-==----==============

     

    客户端:

    网络延迟包括在手机与运营商网络间建立连接的时间、建立 TCP 连接的时间, 可能还有协商 SSL 连接的时间, 以及发送与接收 HTTP 请求的时间.

    我们没有办法降低单个网络请求的延迟, 不过可以通过一些技术来降低多个请求的延迟. 本节将会介绍如何降低应用的网络请求所消耗的潜在时间

    对于应用所需的一小块数据来说, 每次都建立并关闭一条 TCP 连接是非常不明智的. 降低请求延迟有两项最佳实践: 在单个 TCP 连接上发送 HTTP 请求, 以管道的形式发送 HTTP 请求, 从而优化全双工 TCP 连接的使用

    另一种方式是使用单个服务端点来架构服务层, 它会将请求代理给组织内外的其他服务. 这种方式可以通过让应用对不同的活动重用单个连接而避免延迟

    HTTP 管道是重用现有 TCP 连接的第三种方式. 它使得 HTTP 客户端能够在对第一个请求的响应返回前在相同的 TCP Socket 上发送第二个请求. 响应返回的顺序与请求发起的顺序保持一致.

     
     
     
     
     
    关注一波呗!嘻嘻

     
    展开全文
  • 关于降低视频延迟,有兴趣的可以查阅以下这几篇文章:海康摄像头直播视频上传到流媒体服务器平台后如何降低延迟?视频流媒体服务器中怎么降低直播出现的延迟现象? 本文讲的是视频直播点播平台EasyDSS中的延迟...

    我之前写过很多关于延迟的问题,但是延迟这个问题是在现有视频的技术下必然会存在的问题,或许等到未来5G以上的网络普及时,就能够解决大部分延迟问题。

    关于降低视频延迟,有兴趣的可以查阅以下这几篇文章:海康摄像头直播视频上传到流媒体服务器平台后如何降低延迟?视频流媒体服务器中怎么降低直播出现的延迟现象?

    9861d863918551af3e401f8084309e4e.png

    本文讲的是视频直播点播平台EasyDSS中的延迟现象。有用户反应在视频直播点播流媒体服务器里面HLS播放延迟较大,有点影响观感。

    这里我们首先推荐的是通过调整切片时间来减少延迟,理论延迟在30s左右(系统默认为4s 可改为2s)

    147.png

    146.png

    展开全文
  • Mosh 解决SSH境外服务器卡顿延迟问题

    千次阅读 2018-10-08 18:05:56
    Mosh是基于UDP协议的一个远程小工具,而且支持IPv6, 可以有效解决使用SSH境外服务器出现的输入卡顿延迟问题。   安装 Mosh需要客户端和服务器都安装。 服务器端 Ubuntu apt update apt install -y mosh ...
  • 编码器用FMLE,用手机秒表作为延迟计算。 服务器结构如下: 源站:NGINX-RTMP 一级边缘:SmartServer 二级边缘:SmartServer ...可见,延迟主要是在NGINX-RTMP,边缘服务器延迟算法让延迟最低。 改变编码参数:
  • 最近加入了一个开源的mc启动器项目开发组,另外加上本人是一mc的服主,所以想到了再启动器中加入此功能...而本人颇不喜这种被动选优的方式,于是便想通过游戏的启动器来自动判断服务器多个地址的延迟并选择最好的线路。
  • 一:引进国际专线接入国际专线接入是指建立专门的网络隧道以便于直接访问国际互联网,这样的方式也能大大降低访问速度的延迟问题。 二:全优化中国大陆方向上的带宽资源从中国与世界各国的实际距离来看,不同国家的...
  • 香港机房服务器作为内地访问延迟最低的的免备案机房,一直是国内企业从事海外相关业务的首选,还有不少个人站长也会选择租用香港云服务器或者物理服务器。经常租用香港服务器的朋友经常会遇到这样的问题。即使是香港...
  • Ping.Pe 是一个非常强大的免费站长工具,可以从全世界 30 个节点检测网站 Ping 时间、MTR 和封包传输速度,站长们只要输入查询的 IP 或域名就能从全世界 ...
  • SSH 连接服务器延迟问题

    千次阅读 2016-03-21 09:57:58
    用secureCRT 连接服务器的时候,发现总要等个10秒左右的时间。 这个是ssh 连接的时候 查询了DNS服务器,查询超时后才继续。 解决办法: vi /etc/ssh/sshd_config 把#UseDNS yes 改成 UseDNS no ...
  • 由于和好友联机玩求生之路2时经常出现mod兼容性问题和高ping值问题,游戏体验非常差,而且官方服务器并不能支持第三方地图,所以我们决定自己搭建一个服务器。 不过不知道什么原因,网上关于搭建l4d2服务端的细节...
  • RTMP服务器延迟,多级边缘不影响延迟,gop为最大因素-andersonyan-ChinaUnix博客 http://blog.chinaunix.net/uid-26000296-id-4932826.html
  • 在开发中,突然遇到了一套根据服务器的网络延迟(ping),分为不同的等级 贴上核心代码。String delay =newString(); Process p =null; try{ p = Runtime.getRuntime().exec("/system/bin/ping -c 4 "+"117.141.138.101...
  • 本地配置red5服务器成功后,下载自带的demo【publisher】进行视频测试, 视频播放没有问题,但是...个人觉得red5自带的demo都存在延迟问题,是不是得对其服务器端代码进行优化啊? 由于是red5刚接触,目前没有头绪。
  • 那我们如何计算客户端与服务器之间的时间延迟呢?这里有一个比较简单的方法,那就是通过发数据包测量。 首先,我们先来梳理下数据包发送的整个流程: 1)客户端A先记录自己的本地时间TA1,然后给服务器发B发送一个...
  • 教你设置好MTU数值与DNS服务器达到低延迟零丢包率 文章很长,希望大家耐心阅读,这能优化你的网络质量。 丢包率、延迟是评价一条宽带网路素质好坏的常用标准,大丢包率或者大延迟必然严重影响上网体验,而大部分人...
  • 服务器出厂时,BIOS 默认达到了性能和能耗之间的良好平衡,以适应一般环境,但是,在一些环境中,可能需要对服务器进行优化,以获得最大的吞吐量或最低的延迟 以下是dell R710的配置调整 系统设置界面 设置 默认 ...
  • 原文:Optimizing web servers for high throughput and low latency ...服务器出厂时,BIOS 默认达到了性能和能耗之间的良好平衡,以适应一般环境,然而在不同的环境下可能需要对服务器进行优化,以获得最大的...
  • 降低延迟,视频直播APP要这样开发

    千次阅读 2017-12-12 19:11:38
    近几年的视频直播APP市场可以说是格外的火热,可是在这个火热的背后,有一个一直困扰开发者的难题,那就是视频直播软件的延迟现象,如何降低延迟呢?在开发时候要怎么做呢? 1、编码上的优化 在开发视频直播...
  • 文章目录通过RabbitMQ 死信队列实现延迟MQ消息,消息延迟,MQ延迟队列1、延迟消息原理2、如何在Springboot 下创建延迟消息队列3、可能会遇到的问题:项目启动报错4、可能会遇到的...客户端向MQ服务器发送一条队列...
  • 阿里云服务器地域节点遍布全球19个地区节点(国内+海外),共有56个可用区,哪个快网分享阿里云国内及海外节点测试IP,阿里云节点Ping值延迟测试: 阿里云服务器节点全球无缝覆盖,提供CN2高速网络,BGP接入支持。...
  • 为什么需要测量带宽、延迟、抖动和丢包率? 当我们说一个网络环境好时,通常是指我们“感觉”访问网站立刻就打开了;可是如果反过来,一个网站很久才打开,就一定是网络环境差吗?未必,也可能是网站本身有问题。...
  • wireshark来观察延迟

    千次阅读 2019-03-05 16:17:49
    目前网络中主要的延迟分为三类 1、线路延迟,也成为网络延迟(RTT) TCP的三次握手不涉及传输层以上的协议,因此即使服务器处理压力非常大,收到SYN收...3、服务器延迟 三次握手建立完成后,服务器收到了客户端的请...
  • 漫步云端服务器 http://chdong.top/ http://chdong.top/bbs/ http://www.chdong.top/ 发现自己有一个闲置的VPS(好久好久了,居然还没跑路!),于是就拿来测试了下脚本!512内存,测试结果惨不忍睹,结仅供参考!...
  • rtmp推流服务器降低延时

    万次阅读 2018-09-05 10:20:16
    在搭建好的nginx-rtmp服务器上做推流延时会很高我最开始时在6s左右,这时候需要修改接收端和发送端的缓存就可以。 以下是发送端的例子(视频缓存太小后会不能播放,这个只针对音频) 录屏加摄像头和麦克风这个延时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 322,394
精华内容 128,957
关键字:

怎么降低服务器延迟