对于具有大量请求的应用程序,哪个 Linux 版本可提供最佳性能?

对于具有大量请求的应用程序,哪个 Linux 版本可提供最佳性能?

我是 Linux 世界的新手,我正在尽可能多地学习。

有一个服务器应用程序需要每秒处理大量请求。该服务器是使用 C++ 为 Linux 编写的。我们需要在一个免费的操作系统上部署此服务器,以便获得最佳性能。如果让您决定,您会选择哪个操作系统?

答案1

我认为你的问题不太清楚。Linux 就是操作系统。发行版是将 Linux 和其他软件打包成一个好的包,供你安装和运行。

话虽如此,Linux 服务器的主要竞争者是:

  • RedHat / CentOS
  • Debian
  • Ubuntu 服务器?

在发行版之间,软件的主要版本之间几乎没有什么区别,也许除了内核。(我知道 CentOS 仍在运行 2.6.18。)我个人投票支持 Debian Stable,但发行版的选择是非常个人的事情。在做出决定之前,花点时间在 Wikipedia 和 Google 以及各种发行版网站上。欢迎随时提问!

答案2

所有现代发行版都将为您提供几乎相同的性能,因为它们都基于相同的内核(Linux 2.6.x)。

我建议Ubuntu 服务器版本,它用户友好并且易于启动和运行。

答案3

这完全取决于应用程序的编码方式、功能等等。最近的 Linux 版本已包含新的 API 来提高吞吐量,例如 2.6.17 中引入的 splice/vmsplice。但显然需要您的应用程序使用它们。无论如何,所有最新版本的现代发行版都至少具有该内核。

Splice 基本上允许您在文件描述符之间传递数据而无需复制数据。您只需告诉操作系统,从那里获取那么多字节并将它们发送到那里。它减少了数据复制和上下文切换,因为这一切都在内核中完成。

诸如 haproxy 之类的应用程序可以使用此调用来填充低端服务器上的双 10 千兆以太网卡。

现在,如果您的应用程序没有花费大部分时间来复制数据,那么 splice/vmsplice/tee 不会产生太大影响。但是,您需要研究其他系统调用来处理大量同时连接。

例如,确保使用 epoll 而不是 select/poll。后者在每次调用时都会发送它们感兴趣的所有 FD 的列表,而 epoll_create 会在内核中构建一个列表,而 epol_wait 调用只会引用该列表。当您监听数千个套接字并且每秒调用 select/poll 一万次时,您就会看到优势。

除此之外,您还需要查看运行时 sysctl 设置。默认值通常过于保守。

最后,我绝对会建议您使用基于订阅/支持的发行版,例如 RHEL 或 SLES;他们提供的支持服务正是您所需要的,如果内核出现性能下降,他们会为您提供帮助,并且能够快速修复。

答案4

我想说,你应该瞄准内核版本,而不是特定的操作系统。除此之外,你还应该真正考虑调整网络层,它可以带来巨大的不同。

相关内容