分类归档:实践总结

版本管理与版本控制

最近对组成成员进行了一次简单的版本管理与版本控制的分享,其实这些东西都是开发中必不可少的,只是以前的工作重点并没有放在这个方面.废话少说,我们先了解下什么是版本管理与版本控制.

版本管理

版本管理表示对项目整体版本的演变过程管理,最简单的如v1.0变更至v1.1,从snapshot变更至release.
一般情况下版本发布应该具备以下条件:

  1. 配置项没有任何其它版本依赖
  2. 所有的代码已经提交版本控制系统中
  3. 自动化测试全部通过

阅读全文…

Red5问题总结

问题描述

最近生产环境的red5经常出现拒绝服务的问题,仔细查看日志后发现所有的请求都是NioProcessor-1来完成,如果请求服务过多,会导致该线程处理不过来,也将导致线上其它服务将无响应,仔细查看了下RTMPMinaTransport构造源码

阅读全文…

MySQL授权丢失

今日在开发时突然发现MySQL不能使用了,一看日志发现是连接获取不到,赶紧查看User表,发现常用的insert,select,update,delete,create,drop授权全都没有了,而且这是一个root账户,查看了网上的解决方案,使用skip-grant-tables参数启动后授权仍然提示报错

阅读全文…

Red5性能测试

最近一直在做Red5的直播与视频开发,虽然Red5提供了与FMS趋同的功能,但对于Red5的性能我们一直不太清楚,如果想大规模使用Red5作为我们的生产服务器,那么还需要对它进行一些性能测试,以此来验证它是否能满足我们的需求.

测试概要

对Red5进行压力测试与性能测试,其中Red5版本为1.0.0-RC1.

测试环境

硬件环境:CPU:Intel [email protected],内存8G
软件环境:Red5,CentOS
网络环境:1000M
阅读全文…

java nio详解

游戏服务端核心是socket服务,而java提供了传统的bio与nio,而要满足服务端的高性能与高并发无疑要选择nio作为开发首选.

什么是nio

nio即non-blocking io,nio是基于事件驱动思想的,实现上通常采用Reactor模式.当程序发起io的读或者写操作时是非阻塞的,当socket有流可读入或者可写入时,操作系统会通知应用程序进行处理,处理完后再将流再写回缓冲区或者操作系统.对于网络io来说,主要是连接建立,流读取与流写入三种事件.需要注意的是,linux 2.6以后的版本采用epoll方式实现nio.

什么是aio

aio即async io,同样aio也是基于事件驱动思想的,但实现上通常采用Proactor模式.当程序发起io的读或者写操作时是异步的,只需要调用相应的read或者write方法.当socket有流可读入时,操作系统会将流传入read方法缓冲区,并通知应用程序,而当流有可写入时,操作系统会将流写入完毕后通知应用程序.相比nio,aio不仅简化了开发,而且省去了遍历Selector的代价.但aio只在java 7中提供,而我们目前还是先研究java 6中的nio.
阅读全文…