zoukankan      html  css  js  c++  java
  • 游戏服务器优化

    网络游戏服务器注意事项,优化措施
    1:IO操作是最大的性能消耗点,注意优化余地很大。
    2:算法数据结构。排序寻路算法的优化。list,vector,hashmap的选择。大数据寻址,不要考虑遍历,注意考虑hash.
    3:内存管理。重载new/delete,内存池,对象池的处理。
    4:数据的提前准备和即时计算。
    5:CPU方面的统计监视。逻辑帧计数(应当50ms以内)。
    6:预分配池减少切换和调度,预处理的线程池和连接池等。
    7:基与消息队列的统计和信息监视框架。
    8:CPU消耗排名:第一AOI同步,第二网络发包I/O操作,第三技能/BUFF判定计算处理,第四定时器的频率。
    9:内存泄露检测,内存访问越界警惕,内存碎片的回收。
    10:内存消耗排名:第一玩家对象包括其物品,第二网络数据缓冲。
    11:注意32位和64位的内存容错。
    12:减少不必要的分包发送。
    13:减少重复包和重拷贝包的代价。
    14:建议分紧急包(立刻发送)和非紧急包(定时轮训发送)。
    15:带宽消耗排名:第一移动位置同步,第二对象加载,第三登陆突发包,第四状态机定时器消息。
    16:客户端可做部分预判断机制,部分操作尽量分包发送。
    17:大量玩家聚集时,部分非紧急包进行丢弃。
    18:注意数据库单表内key数量。
    19:活跃用户和非活跃用户的分割存取处理。
    20:控制玩家操作对数据库的操作频率。
    21:注意使用共享内存等方式对数据进行安全备份存储。
    22:注意安全策略,对内网进行IP检查,对日志进行记录,任意两环点内均使用加密算法会更佳。
    23:实时注意对网关,数据库等接口进行监察控制。
    24:定时器应当存储一个队列,而非单向定位。
    25:九宫格数据同步时,不需要直接进行九宫格的同步,对角色加一个AOI,基于圆方碰撞原理,抛弃不必要的格信息,可大幅节省。
    26:客户端做部分的预测机制,服务器检测时注意时间戳问题。
    27:定期心跳包,检查死链接是必要的。
    28:为了实现更加负责多种类的AI,AI寻路独立服务器设计已经是必须的了。其次需要考虑的是聊天,同步。
    29:服务器内网间可以考虑使用UDP。
    30:注意所有内存池,对象池等的动态扩张分配。

    1:以内存换取CPU的理念。
    2:NPC不死理念。(只会disable)
    3:动态扩展理念,负载均衡理念。
    4:客户端不可信理念。
    5:指针数据,消息均不可信理念。

    6:尽量在客户端进行最严格的校验,挡住无谓的请求

    7:能放在客户端的功能,放在客户端实现,服务器进行校验即可

  • 相关阅读:
    LeetCode 40. 组合总和 II(Combination Sum II)
    LeetCode 129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers)
    LeetCode 60. 第k个排列(Permutation Sequence)
    LeetCode 47. 全排列 II(Permutations II)
    LeetCode 46. 全排列(Permutations)
    LeetCode 93. 复原IP地址(Restore IP Addresses)
    LeetCode 98. 验证二叉搜索树(Validate Binary Search Tree)
    LeetCode 59. 螺旋矩阵 II(Spiral Matrix II)
    一重指针和二重指针
    指针的意义
  • 原文地址:https://www.cnblogs.com/like-minded/p/8297751.html
Copyright © 2011-2022 走看看