提升服务器性能,内存大幅度优化!!

提升服务器性能,内存大幅度优化!!

Scroll Down

前言

功能大家都能实现,服务器性能优化可以提供用户体验,公司上个游戏是用C++写的pc端游,玩家多时服务器可能出现内存溢出的情况,现在做手游吸取经验做了不少优化

数据结构

玩家数据基本在player用户表,其余帮派、宠物、物品、活动管理,服务器配置等表

优化内存数据

服务器优化主要是内存优化,提高内存使用效率,不仅只是游戏,web项目优化没做好,有时页面交互卡个几秒,优化用户体验是很重要的

优先读内存

这个大家都知道,内存中有数据读取内存,内存中没数据读数据库

GePlayer(id)--获取内存中players是否存在,没有返回空
GoGePlayer(id)--获取内存中players是否存在,没有则查找数据库返回对象

减少数据库交互

玩家登录时,GoGePlayer实体对象加入players(table结构),也可以统计当前在线人数

缓存队列自动入库

以前项目的入库方法DBQueue,所有继承实体对象都是updateQueue即可,数据库不存在则插入。
现在项目对象修改完全都不需要数据库操作,缓存数据列表例如players定时自动入库,插入要手动操作,具体以后填坑

提高内存使用效率

内存数据分为用户数据和服务器数据

用户登出数据清理

当用户触发登出事件,数据直接入库保存,然后从内存中删除。

尽量只操作在线用户

内存中存在数据即服务器数据和当前在线用户数据,服务器数据例如排行榜,只会由在线玩家操作触发变更,推送等也是给在线玩家,离线用户在登入时更新

用户登录更新

方法很多,用户上次在线时间可以触发每日,每周等重置事件,活动,任务updataTime可以根据服务器当前活动判定,小于活动时间开始时间则重置

客户端本地处理

客户端能处理的可以交由客户端,服务器的数据处理是每个用户都要判定,而客户端数据在本地,只用单个用户判定,减轻服务器压力

这是我最近项目优化的处理方法,大家有什么好想法可以一起分享