我用C++开发了一个迷你HTTP服务器,使用boost :: asio,现在我用多个客户端加载测试它,我一直无法接近饱和CPU.我正在测试一个Amazon EC2实例,大约50%使用一个cpu,20%使用另一个cpu,其余两个闲置(根据htop).
细节:
- 服务器为每个核心激活一个线程
- 接收,解析,处理请求并写出响应
- 请求是针对数据的,这些数据是从内存中读取的(此测试只读)
- 我正在使用两台机器"加载"服务器,每台机器运行一个java应用程序,运行25个线程,发送请求
- 我看到大约230个请求/秒吞吐量(这是应用程序请求,它由许多HTTP请求组成)
那么,我应该怎样看待改善这一结果呢?鉴于CPU大部分处于空闲状态,我希望利用这些额外的容量来获得更高的吞吐量,比如800请求/秒等等.
我有过的想法:
- 请求非常小,并且经常在几毫秒内完成,我可以修改客户端以发送/组合更大的请求(可能使用批处理)
- 我可以修改HTTP服务器以使用Select设计模式,这适合吗?
- 我可以做一些分析,试图了解瓶颈是什么/是什么