前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >提升服务器性能,内存大幅度优化!!

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

原创
作者头像
深雾
修改2020-07-06 10:35:03
修改2020-07-06 10:35:03
7.4K0
举报
文章被收录于专栏:工具类工具类

前言

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

数据结构

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

优化内存数据

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

优先读内存

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

代码语言:lua
复制
GePlayer(id)--获取内存中players是否存在,没有返回空
GoGePlayer(id)--获取内存中players是否存在,没有则查找数据库返回对象

减少数据库交互

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

缓存队列自动入库

以前项目的入库方法DBQueue,所有继承实体对象都是updateQueue即可,数据库不存在则插入

现在项目对象修改完全都不需要数据库操作,缓存数据列表例如players定时自动入库,插入要手动操作,具体以后填坑

提高内存使用效率

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

用户登出数据清理

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

尽量只操作在线用户

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

用户登录更新

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

客户端本地处理

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 数据结构
  • 优化内存数据
    • 优先读内存
    • 减少数据库交互
      • 缓存队列自动入库
  • 提高内存使用效率
    • 用户登出数据清理
    • 尽量只操作在线用户
    • 用户登录更新
    • 客户端本地处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档