使用Mina做了一个WebGame的聊天服,已上线几个月了,鸭梨相当的小,以此文记录经验一二。
与前端flash使用协议AMF3。
一、压力测试与修改(cpu*2+memory*4)
1、内存增长迅速,cpu占用偏高
原因:广播的同一条消息都进行了AMF3-Object->buffer的编码
改进:一次编码,通过buffer进行复制
2、Too many open files
原因:打开文件描述符号太多,超过系统默认限制,默认open files (-n) 1024
修改系统设置ulimit -n 65535
3、小机器人client最多开到440左右
原因:windows默认端口1024-5000,小机器人使用mina写的,clientTcpPortNum=(NIOAcceptor.Selector*1+NIOProcessor.Selector*1(CPU*2+1))*2+clientPort=9
修改系统设置regedit->[HKEY_LOCAL_MACHINE /System /CurrentControlSet /Services /Tcpip /Parameters] ->MaxUserPort=65534
4、系统瓶颈:(全广播)200client*(250message*1second)=50000或者2000client*(25message*1second)
原因:网卡write到瓶颈(100M网卡4-8M/s),消息在write后积累,内存迅速吃尽,cpu满负荷。(1条消息(200k)=HeapByteBuffer*1+DefaultWriteFuture*1+DefaultWriteRequest*1+EncodeWriteRequest*1+MessageWriteRequest*1=5)
修改:引入消息队列控制发送模式
二、消息立即发送模式与队列控制发送模式自由切换
任何系统都有瓶颈,尤其是硬件条件有限的情况下。如何在有限的硬件条件下既保证系统的吞吐量及一定的响应能力,又保证系统的健壮性和稳定性,不至于系统因为瓶颈(系统负载运行高峰期)而崩溃,的确让人深思。
最后我决定使用优先级队列控制消息的发送时间及频率,在极端情况下,丢弃优先级较低的消息。
1、使用开关变量控制两种发送模式,默认情况下使用立即发送模式;
2、开启一定时线程监测系统运行状况,包括积累消息数、内存使用情况、cpu(由于cpu监测耗时比较大,后来去掉了)、队列中消息数等;
3、根据系统运行状况以及硬件情况(cpu+memory+nic)进行两种模式的自由切换;
4、消息队列根据消息业务逻辑,如用户聊天信息、小公告信息、系统公告等进行优先级划分。
相关推荐
《一个陈旧的WebGame服务端的优化》 在当今高速发展的互联网时代,网络游戏已经成为人们休闲娱乐的重要方式,而WebGame作为其中一种便捷的游戏形式,因其无需下载客户端即可游玩的特性,深受用户喜爱。然而,随着...
开发Web游戏时,通常需要考虑性能优化、用户交互设计、网络通信以及数据同步等问题。 【压缩包子文件的文件名称列表】只给出了"wog3",这可能是游戏项目的简称或者是某个版本号。通常,一个Web游戏项目会包含多个...
"Chat1.5"则可能是聊天系统的版本,表明游戏内包含一个可升级的聊天功能,让玩家能够实时交流。 在Webgame开发中,数据库管理是非常重要的一环。PHP通常与MySQL等数据库管理系统结合,用于存储玩家数据、游戏进度等...
- **性能优化**:考虑到Webgame运行于Web环境中,需注重前端性能优化,减少不必要的网络请求。 - **安全性**:重视数据安全,采取有效措施防止恶意攻击和数据泄露。 通过以上内容,我们可以了解到Webgame开发涉及多...
【标题】"Webgame ASP JavaScript在线游戏源代码"揭示了这是一个使用ASP(Active Server Pages)技术和JavaScript编程语言构建的在线游戏平台的源码资源。ASP是微软开发的一种服务器端脚本环境,常用于动态网页的...
### Webgame开发简明教程知识点总结 #### 一、Webgame概述 - **定义与特点**:Webgame,即网页游戏,是一种通过浏览器即可运行的游戏形式。它无需安装客户端,玩家可以直接通过网络浏览器进行游戏体验。这类游戏...
### Webgame游戏引擎知识点解析 #### 一、Webgame引擎概览 在当前的游戏开发领域中,Webgame作为一种可以通过浏览器直接运行的游戏类型,受到了越来越多玩家的喜爱。为了更好地满足这一需求,许多开发者开始深入...
8. 性能优化:由于JavaScript在浏览器环境中运行,性能优化尤为重要。了解如何减少DOM操作、避免阻塞主线程、合理使用闭包等技巧,可以提升游戏性能。 9. AI基础知识:尽管这个引擎的AI部分未完成,但游戏AI是游戏...
源代码中可能包含了数据库设计、SQL查询优化以及事务处理等内容,这些都是保证游戏数据安全性和一致性的关键。 【文件名称列表】"ymdg"可能代表游戏的某个目录或特定模块,具体含义需要查看源代码才能确定。通常,...
10. **性能优化**:在处理大量移动对象或复杂场景时,性能优化是关键。避免不必要的计算,合理利用缓存,以及适时清理不再使用的对象,都是提高游戏性能的有效手段。 这个压缩包中的"**GappleRPG**"文件很可能包含...
在IT行业中,WebGame制作辅助工具是一类专为开发者设计的软件,旨在简化网页游戏的开发过程,提高效率并提供优质的创作环境。本工具集可能包括各种编程接口、图形编辑器、音频处理工具以及资源管理模块等,以帮助...
开发者可以通过修改这些源码,来适应自己的游戏需求或者优化性能。 "说明.txt"文件很可能是对整个项目的一个简要介绍或指南,可能包含安装步骤、运行环境配置、代码结构解析等内容,对于初学者来说是不可或缺的参考...
【标题解析】:“webgame_模拟城市”这个标题暗示了我们正在讨论的是一款基于Web的模拟城市游戏。"webgame"是指在网页上运行的游戏,而“模拟城市”则表明这款游戏是模仿现实城市建设和管理的。 【描述分析】:...
9. **优化和性能**:在开发WebGame时,性能优化是一项重要任务。Flex提供了一些性能调优的技巧,比如减少不必要的重绘、优化数据结构、合理使用缓存等,开发者需要根据游戏的具体需求来应用这些技巧。 10. **游戏...
在Webgame领域,AJAX可以用于实现游戏状态的实时更新,如玩家移动、战斗效果、聊天系统等,极大地提升了用户体验。 在提供的压缩包文件中,"角色地图移动.rar"可能包含了一套用于处理游戏角色在地图上移动的代码。...
通过了解Python在实际Webgame项目中的应用,我们可以更深刻地认识到它作为游戏服务器端开发语言的优势,以及如何利用相关工具和框架来优化开发流程,提升项目质量和效率。对于有意从事Webgame开发的技术人员而言,这...
WebGame是一种基于网络的互动游戏形式,它将玩家带入了一个可以实时交互的...通过WebAssembly和WebGL,开发者可以用Swift构建出运行在浏览器中的高质量游戏,同时利用Swift的优秀特性来优化游戏逻辑和提高用户体验。
【标题】"Webgame 在线棒球赛"是一款基于网页平台的体育竞技游戏,它将传统的棒球运动搬到网络上,让玩家可以在浏览器中体验到棒球比赛的乐趣。这款在线游戏充分利用了Web技术,使用户无需下载安装客户端,只需通过...
《深入解析FLEX WebGame源码》 在Web游戏开发领域,FLEX作为一种强大的富互联网应用程序(Rich Internet Application,RIA)开发工具,以其强大的ActionScript3(AS3)编程语言和Flex SDK,为构建交互性强、图形...
8. **安全性与优化**:源码需要防止作弊、SQL注入等安全问题,并优化性能以应对大量并发玩家。这可能涉及到验证码、数据验证、负载均衡等技术。 9. **响应式设计**:为了适应不同屏幕尺寸的设备,源码应采用响应式...