Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >提升服务器性能,内存大幅度优化!!

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

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

前言

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

数据结构

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

优化内存数据

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

优先读内存

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

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

减少数据库交互

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

缓存队列自动入库

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

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

提高内存使用效率

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

用户登出数据清理

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

尽量只操作在线用户

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

用户登录更新

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

客户端本地处理

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

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一个人的服务器端
能够做这个MMO的触发点是通过某些途径得到了某个大公司使用的一款3D引擎,其他的都是白手起家。当时大家还不知道有“分布式服务器端”一说,服务器端框架参考了《剑3》:剑3内测的时候经常服务器crash,但是每次只crash一个地图,所以可以推知他们是一个地图一个server;加上自己对服务器端的认识,需要Gate当防火墙,需要GameServer来总管MapServer,需要DB来存储,那么最初的服务器端框架就定下来了:Gate、GameServer、MapServer、DBServer。想让服务器之间的连接方式最简化,所以确定GameServer是中心,其他Server都连接并且只连接GameServer。MapServer和GameServer上面准备加脚本,脚本直接选择了python,因为python语法清晰一点。开发平台选择windows,因为当时公司内没有一个人了解linux。
海哥@开发
2022/04/06
6030
IM服务器的架构
一、 总的构架结构示意图: 如上图所示,目前系统总的分成六个模块,分别为网络/协议解析模块,用户帐号管理模块,消息处理模块,动作处理模块,数据均衡处理模块,客户状态处理模块 。 正常流程应该这么实现,以一个或者几个线程运行网络/协议解析模块,然后他根据具体的包类型分发给具体的命令处理模块,每个具体的命令处理模块 至少应该分别运行于不同的线程。 从上面的结构图可以看出,其中客户状态模块和网络/协议解析模块都是公用模块,其他的模块几乎都依赖于这两个模块。目前因为很多功能不予以实现,例如不实现离线消息,所以只有用
李海彬
2018/03/22
2.4K0
1 游戏服务器开发的基本体系与服务器端开发的一些建议
近年来,我身边的朋友有很多都从web转向了游戏开发。他们以前都没有做过游戏服务器开发,更谈不上什么经验,而从网上找的例子或游戏方面的知识,又是那么的少,那么的零散。当他们进入游戏公司时,显得一脸茫然。如果是大公司还好点,起码有人带带,能学点经验,但是有些人是直接进入了小公司,甚至这些小公司只有他一个后台。他们一肩扛起了公司的游戏后端的研发,也扛起了公司的成败。他们也非常尽力,他们也想把游戏的后端做好。可是就是因为没什么经验,刚开始时以为做游戏服务器和做web差不多,但是经过一段时间之后,才发现代码太多,太乱了,一看代码都想重构,都是踩着坑往前走。
范蠡
2018/07/25
5.4K0
1 游戏服务器开发的基本体系与服务器端开发的一些建议
Now 直播应用的后台服务器性能测试实践
WeTest质量开放平台团队
2016/11/01
5.5K5
Now 直播应用的后台服务器性能测试实践
《天天爱消除》服务器性能优化
《天天爱消除》服务器已经在外网稳定运行四年多了,日积月累服务器方面出现了一些问题。主要包括内存,强校验性能,异步开发效率,登录等问题。本文记录这些问题的解决方案和优化效果。
范蠡
2018/12/17
1K0
HTTP/3 性能又大幅度提升!!
在去年 Cloudflare 生日周,我们宣布了初步支持 HTTP/2 的下一代新协议– HTTP/3 。我们的目标是为建立一个更好的互联网而努力。在标准制定上进行协作非常重要,我们很荣幸可以参与到制定标准的工作中来。
架构师修行之路
2020/05/18
1.8K0
HTTP/3 性能又大幅度提升!!
Java在游戏服务器开发中应用【面试+提高】
Java在游戏服务器开发中的应用 随着游戏市场的兴起,特别是网页游戏、手机游戏的崛起,对游戏开发技术的需求越来越多。网络游戏开发是一个庞大的体系,总体来说是客户端与服务器端。客户端是玩家接触的游戏图像显示端,服务器是处理游戏运行中的各种数据,由于一台服务器要支持众多玩家的请求,所以服务器的性能高低决定了同一个游戏的用户数量。 我们公司选择使用Java做服务器开发语言,主要原因是:1.Java是跨平台的,方便部署;2.Java是安全的高级语言,可以提高开发效率;3.Java是面向对象的,代码可以重用;4.Ja
Java帮帮
2018/03/12
2.1K0
Java在游戏服务器开发中应用【面试+提高】
如何不用服务器来开发一个小游戏
享物说是一个大家可以互相赠送物品,有趣、不花钱的社区平台。为了创造更好的社区氛围,我们决定通过小游戏来增加社区的趣味性和互动性。
腾讯技术工程官方号
2019/05/16
1.3K0
如何不用服务器来开发一个小游戏
Golang语言社区--游戏服务器端开发的一些建议(转载)
大家好,我是Golang语言社区(www.golang.ltd)主编彬哥,本篇给大家转载一篇关于游戏服务器开发的文章。
李海彬
2018/03/18
2.9K0
Golang语言社区--游戏服务器端开发的一些建议(转载)
优化C#服务器的思路和工具的使用
优化服务器之前, 需要先对问题的规模做合理的预估, 然后对关键的数据做采样, 做对比, 看和自己的预估是否一致, 误差大在什么地方, 是预估的不对, 还是系统实现有问题.
郑子铭
2023/10/28
2740
优化C#服务器的思路和工具的使用
【性能测试】性能需求挖掘、性能方案制定及压测场景设计之疑惑与思考(一)
模拟用户在同一时间对服务器发送大量请求,以此查看服务器性能指标,尤其关注大业务量情况下运行系统性能的变化(反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能恢复),测试系统的限制和故障恢复能力,找系统瓶颈
王大力测试进阶之路
2019/10/25
3.6K1
6 从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则
腾讯QQGame游戏同时在线的玩家数量极其庞大,为了方便组织玩家组队游戏,腾讯设置了大量游戏室(房间),玩家可以选择进入属意的房间,并在此房间内找到可以加入的游戏组(牌桌、棋盘等)。玩家选择进入某个房间时,必须确保此房间当前人数未满(通常上限为400),否则进入步骤将会失败。玩家在登入QQGame后,会从服务器端获取某类游戏下所有房间的当前人数数据,玩家可以据此找到未满的房间以便进入。
范蠡
2018/07/25
1.1K0
6 从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则
ColyseusJS 轻量级多人游戏服务器开发框架 - 中文手册(中)
快速上手多人游戏服务器开发。后续会基于 Google Agones,更新相关 K8S 运维、大规模快速扩展专用游戏服务器的文章。拥抱☁️原生? Cloud-Native! 系列 ColyseusJS
为少
2021/05/27
2K0
32. 网站性能介绍
网站性能对于普通用户来说,最直接的体现就是响应时间。用户在浏览器上直观感受到的网站响应速度,即从客户端发送请求,到服务器返回响应内容的时间。
Devops海洋的渔夫
2022/01/17
4810
32. 网站性能介绍
论可复用的游戏服务器端开发框架(二)
RPG系统的可复用模型 RPG系统主要负责提供游戏中提供“积累、成长”的快感,也是驱动玩家反复进行游戏操作的重要系统。RPG系统能提供这种作用的最基本逻辑,是以玩家为中心,为其赋予了一系列的可成长的数
韩伟
2018/03/05
2.7K0
论可复用的游戏服务器端开发框架(二)
h2engine游戏服务器设计之聊天室示例
h2engine引擎建群以后,有热心网友向我反馈,想尝试h2engine但是没有服务器开发经验觉得无从入手,希望我能提供一个简单明了的示例。由于前一段时间工作实在忙碌,一直没有抽出时间好好写一下,后来抽空写了出来,自己从小白开发者的角度重新审视了一遍h2engine,自己也收获匪浅,也优化了部分h2engine的架构,使其更易使用。以前的例子都是c++加脚本的例子,这次写一个纯c++的例子。
知然
2018/08/01
7330
游戏服务器端有什么特别
在游戏服务器端开发所有要面对的问题中,有两个是最核心和最普遍的:一是和客户端的通讯;二是游戏登录用户的数据处理。
韩伟
2018/03/05
3.3K1
游戏服务器端有什么特别
Minecraft配置文件参数说明(JAVA服务器篇)
JAVA版Minecraft服务器启动后会生成配置文件server.properties,该文件位于minecraft_server/ 根目录下。
云惑雨问
2025/03/25
3490
Minecraft配置文件参数说明(JAVA服务器篇)
服务器直接输入字符串代码执行方法测试
我们在写代码的过程中时常要调试,但线上的服务器打包部署运行很费时,或者需要在线上查看数据,可以直接在服务器上输入需要执行的代码
深雾
2020/07/07
5390
服务器直接输入字符串代码执行方法测试
小游戏源码开发搭建技术栈和服务器配置流程
近些年各种场景小游戏开发搭建版本层出不穷,作者现为从事小游戏源码开发或游戏运营的朋友们详细介绍小游戏开发及服务器配置流程。
山东布谷科技_孙哥
2025/01/23
3410
小游戏源码开发搭建技术栈和服务器配置流程
推荐阅读
相关推荐
一个人的服务器端
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档