server

1. 游戏服务器开发审核

1.1. 基础开发注意点

1. 字符串格式化
2. stl容器: 迭代器, 谓词
3. 数据类型: 浮点数, 可预测长度类型
4. 数组越界, 内存copy, 堆栈控制
5. 逻辑分支是否清晰
6. 框架稳定可靠性

1.2. 协议

1. 协议是否有对应的统计(流量, 耗时, 最大包, 最大数量包)
2. 协议是否有加密处理, 防止包重放, 录用, 改包
3. 协议处理防御式编程

1.3. 数据存储

1. 数据存储机制及安全性问题
(1). command处理机制
(2). 结果集释放
(3). 多线程数据访问
(4). 是否性能瓶颈
(5). 即时性要求

1.4. 内存管理

1. 常规内存泄漏检测及处理
(1). windows, vld
(2). linux, gperftools Valgrind
2. 运行时内存泄漏检测及处理
(1). 使用工具检测常规内存泄露
(2). 使用对象池分配对象, 管理需要管理的内存

1.5. 多线程

1. 是否存在多线程隐患
(1) 多线程锁的正确使用方式
(2) 多线程设计上规避原则

1.6. 日志处理

1. 日志处理(同步或异步写, 分级, 分文件)
(1). 异步方式log丢失, 同步方式性能消耗
2. 重要事件记录 (例如: 充值记录, 物品流转记录)
(1). 数据采集, 问题分析

1.7. 异常及崩溃处理

1. 异常处理作用及意义
(1). 防止崩溃, 问题收集, 前置条件(资源回收guard实现)

2. dump/core文件无效时处理机制
(1). 执行权控制, 协议处理, 定时器, 脚本 

1.8. 配置文件及脚本模块

1. 配置文件格式检测及reload机制
(1) 防止格式错误产生问题, 增加战线
(2) reload 注意事项: 是否有存指针, 以及动态操作配置文件数据
2. 脚本格式检测及reload机制
(1) 脚本错误的提前检测
(2) 脚本数据归属权问题

1.9. 时区问题

1. 时区问题
(1). 标准时间与现实时间
2. 是否处理了夏令时/冬令时
(1). API设置标记

1.10. 单节点问题

1. 单节点问题到底在说什么
(1) 存在单节点服务器的情况, 开发者需要重点关注单节点服务器的稳定性为第一优先级

1.11. 压力测试与性能分析

1. 压力测试的作用及有效性
2. 性能分析的作用及有效性

1.12. 国际化

1. 国际化字符串处理原因及目的
(1) 国际化字符串处理 用于 解决项目发布海外多语种版本. 
(2) 标准就是在代码中不明文出现字符串, 所以将字符串统一放在一个配置中. 这样要发布其他语种版本, 仅仅需要翻译这个文件即可(github上面有专门翻译的组件, 可以简化常规翻译)

1.13. 第三方库问题

1. 第三方库的更新是否频繁 是否使用稳定版本
2. 性能及易用性指标
3. 是否经过项目检阅

1.14. 功能相关

1. 模块开关

1.15. 政策相关

1. 屏蔽字库
2. 收益系数

1.16. 开发环境定制

centos 7.6
gcc 8.3.1

1.17. 性能测试注意

tcp 单链路测试

1.  Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz 8核心
[2019-09-02 22:40:15 985418] [24579][trace] QPS [44W/s] sio=[12.3798M/s] tio=[46.9796M] msg_size=[10 + 19]
[2019-09-02 22:40:16 984622] [24579][trace] QPS [44W/s] sio=[12.3511M/s] tio=[59.3308M] msg_size=[10 + 19]
[2019-09-02 22:40:17 984712] [24579][trace] QPS [44W/s] sio=[12.3681M/s] tio=[71.6988M] msg_size=[10 + 19]
[2019-09-02 22:40:18 985523] [24579][trace] QPS [44W/s] sio=[12.3992M/s] tio=[84.0981M] msg_size=[10 + 19]

2.  Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz 16核心
[2019-09-03 10:39:35 284746] [1536][trace] QPS [23W/s] sio=[6.37766M/s] tio=[48.7478M] msg_size=[10 + 19]
[2019-09-03 10:39:36 284744] [1536][trace] QPS [23W/s] sio=[6.39464M/s] tio=[55.1424M] msg_size=[10 + 19]
[2019-09-03 10:39:37 284736] [1536][trace] QPS [23W/s] sio=[6.41073M/s] tio=[61.5532M] msg_size=[10 + 19]
[2019-09-03 10:39:38 285478] [1536][trace] QPS [23W/s] sio=[6.46986M/s] tio=[68.023M] msg_size=[10 + 19]

3. 结论 单链路对CPU Hz要求较高 影响较大

tcp 4链路测试

1.  Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz 8核心
[2019-09-03 11:05:15 689859] [25034][trace] QPS [68W/s] sio=[19.0325M/s] tio=[433.947M] msg_size=[10 + 19]
[2019-09-03 11:05:16 689860] [25034][trace] QPS [68W/s] sio=[18.9445M/s] tio=[452.891M] msg_size=[10 + 19]
[2019-09-03 11:05:17 689860] [25034][trace] QPS [68W/s] sio=[18.9762M/s] tio=[471.867M] msg_size=[10 + 19]
[2019-09-03 11:05:18 689857] [25034][trace] QPS [68W/s] sio=[18.8398M/s] tio=[490.707M] msg_size=[10 + 19]

2.  Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz 16核心
[2019-09-03 10:42:33 757748] [1617][trace] QPS [42W/s] sio=[11.883M/s] tio=[258.367M] msg_size=[10 + 19]
[2019-09-03 10:42:34 757749] [1617][trace] QPS [43W/s] sio=[12.1313M/s] tio=[270.498M] msg_size=[10 + 19]
[2019-09-03 10:42:35 757770] [1617][trace] QPS [43W/s] sio=[11.9836M/s] tio=[282.482M] msg_size=[10 + 19]
[2019-09-03 10:42:36 757747] [1617][trace] QPS [44W/s] sio=[12.2161M/s] tio=[294.698M] msg_size=[10 + 19]

3.