首页源码red5安装(Linux系统上安装Red5服务器的指南)

red5安装(Linux系统上安装Red5服务器的指南)

编程之家2024-01-28192次浏览

一、linux 下怎么解决red5 的内存溢出

Red5作为多媒体的开源的框架,实现了RTMP协议,完成了视频,音频和多媒体数据的传输和解析,很多的产品都在使用它。我们同样在用他们的服务,但是遇到一个内存泄漏的问题,这个内存泄漏是如何发现的呢:

red5安装(Linux系统上安装Red5服务器的指南)

现象:服务器跑了两天左右,出现了两种情况:

1.内存溢出

2.内存没有溢出,但是提供不了任何服务,服务器不能接收任何request

分析:

red5安装(Linux系统上安装Red5服务器的指南)

1.扩大虚拟机的内存,结果服务器跑长了点时间,照样内存溢出

2.Dump出Heap快照,并用Eclispse Memory Analyzer进行分析,发现RTMPMinaConnection对象大量存在ConcurrentHashMap对象里面,为什么会出现大量的connnection?即使是大量的客户端请求,为什么内存没有释放?

3.分为三个问题考虑:

1)为什么会出现大量的connnection?连接从哪里来的

2)大量的connection为什么会没有释放?

3)为什么connection达到一定的数量,服务器即使在内存充裕的情况下,仍然提供不了任何服务?

red5安装(Linux系统上安装Red5服务器的指南)

根据大量的观测,发现red5服务器,我们用Haproxy代理了rtmp请求,而HA即使没有请求的情况下,仍然试图连接,以探测代理的服务器是否存活,而red5的keepalive时间一过,会试图关闭连接,关闭之后,通过查看源代码发现,connection虽然关闭了,但是没有从concurrentHashupMap里面remove掉,而真是这种Ha的不停的通过创建心跳连接来探测red5是否处于活的状态,而red5关闭连接之后,并没有从concurrentHashMap里面移除,从而造成了最终的内存溢出,同时由于没有移除inactive的连接达到了red5设定的最大的允许的inactivity连接的数量,默认为60000个连接,从而造成我们刚才看到的现象-即使内存充裕的情况下,仍然提供不了任何服务的情况。

查找这个错误的过程是痛苦的,甚至没有一点头绪,还好通过大量的测试和源代码分析,发现了这个问题。我们现在已经升级到red5 0.9.1的版本了,目前情况良好,同时为了确保服务器的稳定性,我们也查阅了相关的源代码,可以确定0.9.1版本中已经fix了这个问题。相信red5 server在我们的产品上线后会处于非常稳定的状态。

发现这个问题,一些工具的使用是关键的:

首先,要会分析heap快照,而eclipse memory analyzer确实是很强大的工具。帮我们提供了大量有用的信息。

其次,开源软件是不可靠的,只有我们对它们的代码有深入的分析才会得出好的结果。还好,源代码开放也为我们提供了查找问题来龙去脉的根据。而我们也可以对开源软件进行优化,在以后的内容里,我也会记录我们优化red5 server的整个过程,相信还有很多地方,我们仍然可以优化它。

网上找的~~

二、red5流媒体服务器可以用来做什么

流媒体服务器的主要功能是以流式协议(RTP/RTSP、MMS、RTMP等)将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软件接收实时视频流,再以流式协议直播给客户端。典型的流媒体服务器有微软的Windows Media Service(WMS),它采用MMS协议接收、传输视频,采用Windows Media Player(WMP)作为前端播放器;RealNetworks公司的Helix Server,采用RTP/RTSP协议接收、传输视频,采用Real Player作为播放前端;Adobe公司的Flash Media Server,采用RTMP(RTMPT/RTMPE/RTMPS)协议接收、传输视频,采用Flash Player作为播放前端。值得注意的是,随着Adobe公司的Flash播放器的普及(根据Adobe官方数据,Flash播放器装机量已高达99%以上),越来越多的网络视频开始采用Flash播放器作为播放前端,因此,越来越多的企业开始采用兼容Flash播放器的流媒体服务器,而开始淘汰其他类型的流媒体服务器。支持Flash播放器的流媒体服务器,除了Adobe Flash Media Server,还有Ultrant Flash Media Server流媒体服务器软件,以及基于Java语言的开源软件Red5。

我用的是小鸟云的服务器。

三、red5 live555 哪种好

方式又好多种摄像头采集数据,用户空间得到数据后,可以保存本地,称之为录制 client通过链接设备,触发设备进行摄像头采集数据,然后吐流给client,这叫做网络传输摄像头采集数据,然后通过某种协议,将数据推流给对应的服务器,这叫做数据推流也就是说,你可以又多种选择,RTSP/RTMP都可以,RTSP你可以不断的采集数据,然后写到socket对应的buffer里,客户端连过来的时候,吐流给客户端,RTSP你可以自己建一个,例如live555,或者ffmpeg的ffserver,不过更坚毅live555或者自己写一个;RTMP你也可以不断的采集数据,然后使用同RTSP的方法,也可以建议哥RTMP服务器,例如red5,ngx_rtmp之类的,采集到的数据推流至服务器即可,推流自己不会的话,可以使用ffmpeg推流,采集也可以使用ffmpeg从你的接口中采集还有一种就是HLS了,这种方式实时性不是特别高,但是实现起来非常简单,就是将你的流转成h264+aac这种的流,然后封装用mpegts,ffmpeg里面又 hls或者segment的支持,可以参考>>

nod32更新服务器(手把手教你搭建NOD32升级服务器)busybox安装(如何安装busybox)