最近遇到了一个BUG,但是它的出现又存在概率,所以挺有意思的。

BUG的现象是:视频在播放过程中(已播放进度<已加载进度),首先出现了缓冲的动画效果其次呈现雪花背景并且抛出异常"视频连接超时" 。或者首先出现了缓冲的动画效果其次视频返回从头播放。

定位到BUG的原因是:某1台服务器存在不稳定的因素,导致视频播放过程中出现了中断。(也就是外部原因)(不过外部原因对服务造成影响的大小是否可以在代码层面优化?可以补充和思考)

具体说说----

当我们访问1个视频网站,打开了某1个视频,那么接下来会有几个步骤:

[1] 解析XML文件

[2] 与视频源建立连接

[3] 视频开始播放

那么,这个BUG的原因是在第[2]个步骤,为啥会存在概率呢?

网站的视频源会存放在多台服务器上面,比如放在这3台服务器上:flv.bn.youtube.com | flv4.bn.youtube.com | flv5.bn.youtube.com

这样做的目的(1)是不会因为某1台服务器坏了就影响到用户看不了视频,目的(2)是分散用户访问对服务器的压力,

同时,程序员在代码内也事先配置了flv、flv4、flv5被访问的概率,

所以,用户有时候是从flv.bn.youtube.com获取视频源,有时候是从flv4.bn.youtube.com获取视频源,有时候也可能是从flv5.bn.youtube.com获取视频源,

当用户的某1次请求是与那台不稳定的服务器建立的(即:在不稳定的服务器上看视频,比如假设今天flv.bn.youtube.com不稳定),就会出现这个BUG了。BUG的表现形式虽然有所差别,那是受到网络环境和服务器配置等因素共同影响的了。

[ 2014-07-03 16:22:27 ] YoutubePlayer xx.xxxx
[ 2014-07-03 16:22:27 ] Chrome ooooo
[ 2014-07-03 16:22:27 ] WIN ooooo
[ 2014-07-03 16:22:27 ] sid:xxxxx
[ 2014-07-03 16:22:27 ] vid:ooooo
[ 2014-07-03 16:22:27 ] topicid:xxxxx
[ 2014-07-03 16:22:27 ] pltype:ooooo
[ 2014-07-03 16:22:27 ] iplimit:xxxxx
[ 2014-07-03 16:22:27 ] videoadv:http://xxx.ooo.xxx.ooo.xml
[ 2014-07-03 16:22:29 ] _m:1, _b:0

[ 2014-07-03 16:22:29 ] ns.play(http://flv.bn.youtube.com/xxxxx.flv)
[ 2014-07-03 16:22:29 ] false | NetStream.Play.Start
[ 2014-07-03 16:22:29 ] duration:437.24
[ 2014-07-03 16:22:30 ] ns.play(http://flv.bn.youtube.com/xxxxx.flv)
[ 2014-07-03 16:22:30 ] true | NetStream.Play.Start
[ 2014-07-03 16:22:30 ] ns.play(http://flv.bn.youtube.com/xxxxx.flv?start=2129&end=33031317)
[ 2014-07-03 16:22:30 ] true | NetStream.Play.Start
[ 2014-07-03 16:22:31 ] true | NetStream.Video.DimensionChange
[ 2014-07-03 16:22:31 ] true | NetStream.Buffer.Full
[ 2014-07-03 16:22:46 ] true | NetStream.Buffer.Flush
[ 2014-07-03 16:22:48 ] true | NetStream.Play.Stop    

【有意思的BUG】视频连接超时的更多相关文章

  1. 关于MySQL的wait_timeout连接超时问题报错解决方案

    bug回顾 : 想必大家在用MySQL时都会遇到连接超时的问题,如下图所示: ### Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsExce ...

  2. 关于Oracle连接超时的问题

    测试环境ORACLE 11.2.0. 如果连接池设置单个连接闲置时间大于数据库连接超时时间,则连接池中的连接发出数据请求时会出现Connect timeout occurred错误, 这是由于连接超时 ...

  3. MySQL的8小时连接超时时间,导致系统过夜即崩溃,报错Could not roll back Hibernate transaction

    2014年3月开始给单位开发<机关规范化管理网络平台>,10月底成功上线运行,但是存在一个bug: 部署环境: apache tomcat 6.0.41 + mysql5.5 + jbpm ...

  4. Linux Vsftpd 连接超时解决方法(被动模式)

    http://blog.csdn.net/qq_15766181/article/details/46554643 使用 FileZilla FTP Client 连接 Vsftpd FTP,在没有配 ...

  5. 修改tnsnames.ora文件中配置内容中的连接别名后,连接超时解决办法

    1.tnsnames.ora文件中配置内容中的连接别名:由upaydb修改为IP地址 2.连接超时 定位原因: PLSQL登录界面的数据库列表就是读的tnsname.ora中连接的别名,这个文件中连接 ...

  6. SQL Server 连接超时案例一则

    上周六,一工厂系统管理员反馈一数据库连接不上,SSMS连接数据库报"连接超时时间已到.在尝试使用预登录握手确认时超过了此超时时间.......", 如下截图所示: 另外远程连接也连 ...

  7. SSRS报表连接超时的问题

    这段时间遇到一个问题就是ReportService 中采用了远程连接的报表偶尔会断开连接,导致报表导出异常,查阅了很多资料,几天来就是断断续续的终于解决了这个问题,下面把一些解决的点一一展示出来,便于 ...

  8. Linux Vsftpd 连接超时解决方法

    Linux Vsftpd 连接超时解决方法 2013-11-13 10:58:34|  分类: 默认分类|举报|字号 订阅     解决方法(http://www.lingdus.com/thread ...

  9. (转)hbase master挂掉-zookeeper连接超时原因

    link:http://www.51testing.com/?uid-445759-action-viewspace-itemid-812467 并行运行hbase删表,建表操作,多个表多个regio ...

随机推荐

  1. 浅谈angular中的promise

    promise目的就是为了跳出回调地狱.老掉牙的东西,大神轻拍. 举个最简单的例子:请求数据(getData),解析数据(executeData),显示数据(showData). //获取数据 fun ...

  2. 391.FANUC宏程序编程

    运算符 运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一个值.注意,不能使用不等号 运算符 含义 EQ 等于(=) NE 不等于 GT 大于 GE 大于或等于 LT 小 ...

  3. Oracle表生成JavaBean

    package com.batch.tabletojava import java.io.DataOutputStream; import java.io.File; import java.io.F ...

  4. 用 volume container 共享数据 - 每天5分钟玩转 Docker 容器技术(42)

    volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volume.下面我们创建一个 volum ...

  5. electron入门代码

    Electron 提供了一个实时构建桌面应用的纯 JavaScript 环境.Electron 可以获取到你定义在 package.json 中 main 文件内容,然后执行它.通过这个文件(通常我们 ...

  6. 解决mydql执行sql文件时报Error: Unknown storage engine 'InnoDB'的错误。

    我运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解决我的问题,后来解决了,在这里总结一 ...

  7. bazel 测试过程

    google的bazel如日中天,尽管我觉得make已经很好用,但是还是尝试一下,记录之. 首先,从 https://github.com/bazelbuild/bazel/releases 下载对应 ...

  8. SpringBoot系列一(入门,ORM,Transaction,log4j2等)

    今天写篇springboot的博客,主要介绍一下springboot搭建以及一些整合. 首先介绍springboot搭建,我今天选择Maven,想用Gradle搭建的就自己百度一下吧,访问" ...

  9. 【Mysql】MySQL与Oracle的大小写问题

    转载来源:http://aofengblog.blog.163.com/blog/static/63170212010101065030136/ MySQL与Oracle在大小写处理上的区别: 1MY ...

  10. 四.GC —三分钟认识JAVA回收机制(Java Garbage Collection)

    这里以jdk1.8做讲解.Jdk1.8的分代去掉了永久代,只分为新生代(有的也译为年轻代)和年老代. 名词解释: 系统吞吐量:用于处理应用程序处理事务的线程数与用于GC的线程数的比. pause ti ...