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

    技术2025-05-14  18

    目录

    前言数据结构优化内存数据优先读内存减少数据库交互缓存队列自动入库 提高内存使用效率用户登出数据清理尽量只操作在线用户用户登录更新客户端本地处理

    前言

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

    数据结构

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

    优化内存数据

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

    优先读内存

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

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

    减少数据库交互

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

    缓存队列自动入库

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

    提高内存使用效率

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

    用户登出数据清理

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

    尽量只操作在线用户

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

    用户登录更新

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

    客户端本地处理

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

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

    Processed: 0.013, SQL: 9