相关疑难解决方法(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 和目前的网络 TS 最大的区别是什么?

C++ 委员会目前正在制定网络技术规范。我想知道与boost::asio. 而且,我好几次听说in中的udp实现boost::asio效率不高,我想知道TS是否试图解决这个问题。

c++ networking boost boost-asio c++11

4
推荐指数
1
解决办法
1250
查看次数