大三工作室项目 - 五子棋世界(3):压测、工作技术报告
压力测试
写模拟客户端并发很多线程来做的压测。主要测试了注册登录模块。
压测环境:
- 服务器的机器配置:Linux,512M 内存,CPU 2.80 GHZ;
- 模拟客户端的机器配置:Windows XP,256M 内存,CPU 2.80 GHZ;模拟客户端上还运行着 VS2005 和 QQ。
压测数据:
当时对测试结果的一点说明:服务器和客户端的配置都相当低,网络又相当的差,服务器的 Linux 对资源的设置好像也有的问题。在如此恶劣环境之下也能支持 1000 多连接并保持每秒,不好评价。
以现在的视角来看,当时的测试还是差点意思的。其实,是差很多意思,哈哈哈。比如基本的游戏逻辑线程没有做测试。
以下的工作报告和技术报告也是基本摘抄当时的相关文档。
工作报告
- 上学期期中:
- 确定项目,了解项目所需知识及开发工具。
- 编程知识:Socket 编程、Windows SDK 编程。
- 开发工具:VS2005、g++、GDB、Automake。
- 复习《C++ Primer》、《Windows 程序设计》。
- 编写需求分析。
- 确定项目,了解项目所需知识及开发工具。
- 上学期期末:
- 学习项目所需知识:
- 《UNIX 环境高级编程》。
- g++ 和 GDB 的使用。
- Socket 编程。
- MySQL C API 编程。
- 编写了初步服务器程序、初步应用了 epoll 高效服务器网络模型、编写了客户端雏形。
- 总结了一学期的学习和项目经历。
- 学习项目所需知识:
- 下学期期中:
- 学习项目所需知识:
- 学习了《UNIX 网络编程》。
- Automake 的使用。
- 制定了世界的通信协议。
- 编写了完整的服务器程序和客户端程序。
- 初步测试了项目功能。
- 学习项目所需知识:
- 下学期期末:
- 压力测试。
- 完善了文档,总结了一学年的工作学习。
技术报告
系统的架构
- 服务器端:
- 2 个登录注册线程
- 1 个 epoll 网络线程 + 若干游戏逻辑线程
- 1 个定时更新房间列表线程
- 客户端采取大厅 + 五子棋双进程(方便以后扩展更多游戏)
开发工具
- 服务器端:g++、GDB、Automake
- 客户端:VS2005
相关技术点
- Socket 编程:套接字编程是网络应用程序的基础。
- MySQL C API 编程:操作mysql数据库的函数接口。
- epoll + 多线程模型:
- 相比于 select ,epoll 做事件触发最大的好处在于它不会随着监听 fd 数目的增长而降低效率。
- 多线程是并发程序的基础 。
- Windows SDK 编程:直接使用 Windows 的 API 编程,API 使编程更具灵活性。
- 共享内存编程:不同进程之间通信的高效模式,因为他们在同内存里直接存储数据,仿佛在同一进程里对数据进行操作。
- Windows 套接字共享编程:利用共享套接字,可以实现不同进程使用同一个套接。这样由大厅和游戏两个进程的客户端只需维护一个套接字,使开销降低了一半。
- C++ STL 编程:STL 里的很多容器和算法很方便和高效,用它编程,节省很多时间,并使代码看起来很清晰。
- 自定义消息协议编写:服务器和客户端的通信,由于各个状态的数据不一样,消息必须被标识。