最近对组成成员进行了一次简单的版本管理与版本控制的分享,其实这些东西都是开发中必不可少的,只是以前的工作重点并没有放在这个方面.废话少说,我们先了解下什么是版本管理与版本控制.
版本管理
版本管理表示对项目整体版本的演变过程管理,最简单的如v1.0变更至v1.1,从snapshot变更至release.
一般情况下版本发布应该具备以下条件:
- 配置项没有任何其它版本依赖
- 所有的代码已经提交版本控制系统中
- 自动化测试全部通过
最近对组成成员进行了一次简单的版本管理与版本控制的分享,其实这些东西都是开发中必不可少的,只是以前的工作重点并没有放在这个方面.废话少说,我们先了解下什么是版本管理与版本控制.
版本管理表示对项目整体版本的演变过程管理,最简单的如v1.0变更至v1.1,从snapshot变更至release.
一般情况下版本发布应该具备以下条件:
最近生产环境的red5经常出现拒绝服务的问题,仔细查看日志后发现所有的请求都是NioProcessor-1来完成,如果请求服务过多,会导致该线程处理不过来,也将导致线上其它服务将无响应,仔细查看了下RTMPMinaTransport构造源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
public void start() throws Exception { initIOHandler(); IoBuffer.setUseDirectBuffer(!useHeapBuffers); // this is global, oh well if (useHeapBuffers) { // dont pool for heap buffers IoBuffer.setAllocator(new SimpleBufferAllocator()); } log.info("RTMP Mina Transport Settings"); log.info("Connection Threads: {}", connectionThreads); log.info("I/O Threads: {}", ioThreads); //use default parameters, and given number of NioProcessor for multithreading I/O operations //acceptor = new NioSocketAcceptor(ioThreads); //create separate executors to handle connections and i/o Executor connectionExecutor = Executors.newFixedThreadPool(connectionThreads); Executor ioExecutor = Executors.newFixedThreadPool(ioThreads); acceptor = new NioSocketAcceptor(connectionExecutor, new NioProcessor(ioExecutor)); acceptor.setHandler(ioHandler); acceptor.setBacklog(50); log.info("TCP No Delay: {}", tcpNoDelay); log.info("Receive Buffer Size: {}", receiveBufferSize); log.info("Send Buffer Size: {}", sendBufferSize); ... } |
今日在开发时突然发现MySQL不能使用了,一看日志发现是连接获取不到,赶紧查看User表,发现常用的insert,select,update,delete,create,drop授权全都没有了,而且这是一个root账户,查看了网上的解决方案,使用skip-grant-tables参数启动后授权仍然提示报错
1 2 3 |
The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement. |
最近一直在做Red5的直播与视频开发,虽然Red5提供了与FMS趋同的功能,但对于Red5的性能我们一直不太清楚,如果想大规模使用Red5作为我们的生产服务器,那么还需要对它进行一些性能测试,以此来验证它是否能满足我们的需求.
对Red5进行压力测试与性能测试,其中Red5版本为1.0.0-RC1.
硬件环境:CPU:Intel [email protected],内存8G
软件环境:Red5,CentOS
网络环境:1000M
阅读全文…
游戏服务端核心是socket服务,而java提供了传统的bio与nio,而要满足服务端的高性能与高并发无疑要选择nio作为开发首选.
nio即non-blocking io,nio是基于事件驱动思想的,实现上通常采用Reactor模式.当程序发起io的读或者写操作时是非阻塞的,当socket有流可读入或者可写入时,操作系统会通知应用程序进行处理,处理完后再将流再写回缓冲区或者操作系统.对于网络io来说,主要是连接建立,流读取与流写入三种事件.需要注意的是,linux 2.6以后的版本采用epoll方式实现nio.
aio即async io,同样aio也是基于事件驱动思想的,但实现上通常采用Proactor模式.当程序发起io的读或者写操作时是异步的,只需要调用相应的read或者write方法.当socket有流可读入时,操作系统会将流传入read方法缓冲区,并通知应用程序,而当流有可写入时,操作系统会将流写入完毕后通知应用程序.相比nio,aio不仅简化了开发,而且省去了遍历Selector的代价.但aio只在java 7中提供,而我们目前还是先研究java 6中的nio.
阅读全文…