相关疑难解决方法(0)

C++套接字服务器 - 无法使CPU饱和

我用C++开发了一个迷你HTTP服务器,使用boost :: asio,现在我用多个客户端加载测试它,我一直无法接近饱和CPU.我正在测试一个Amazon EC2实例,大约50%使用一个cpu,20%使用另一个cpu,其余两个闲置(根据htop).

细节:

  • 服务器为每个核心激活一个线程
  • 接收,解析,处理请求并写出响应
  • 请求是针对数据的,这些数据是从内存中读取的(此测试只读)
  • 我正在使用两台机器"加载"服务器,每台机器运行一个java应用程序,运行25个线程,发送请求
  • 我看到大约230个请求/秒吞吐量(这是应用程序请求,它由许多HTTP请求组成)

那么,我应该怎样看待改善这一结果呢?鉴于CPU大部分处于空闲状态,我希望利用这些额外的容量来获得更高的吞吐量,比如800请求/秒等等.

我有过的想法:

  • 请求非常小,并且经常在几毫秒内完成,我可以修改客户端以发送/组合更大的请求(可能使用批处理)
  • 我可以修改HTTP服务器以使用Select设计模式,这适合吗?
  • 我可以做一些分析,试图了解瓶颈是什么/是什么

c++ linux multithreading scalability boost-asio

26
推荐指数
2
解决办法
1万
查看次数

boost :: asio threadpool vs. io_service_per_cpu design

目前我不确定,我尝试制作高性能服务器,我有一个6Core CPU,所以如果我使用"io_service_per_cpu"设计,我有6个io_service.

我已经听说线程池设计不是最好的,但我不确定.

你有什么知识?有人已经用每个或其他东西做过压力测试吗?

c++ multithreading boost boost-asio threadpool

7
推荐指数
2
解决办法
3457
查看次数