C 在哪里可以找到不同网络架构上的基准测试?

C 在哪里可以找到不同网络架构上的基准测试?,c,networking,sockets,multithreading,fork,C,Networking,Sockets,Multithreading,Fork,在哪里可以找到不同网络架构上的基准测试 我在玩插座/线/叉,我想知道最好的是什么。我在想,一定有人已经详细说明了套接字服务不同体系结构的所有优点和缺点,列出了运行代码的基准测试 最后,我想用自己的代码运行这些不同的配置,看看哪种配置在不同的环境下运行得最好 和我交谈的许多人都说我应该只使用单线程选择。但是我看到了一个线程参数,当您在线程中存储状态信息以保持代码简单时。编写自己的状态结构与使用经过验证的线程体系结构的权衡是什么 我也被告知分叉是不好的。。。但是,当您在一台无法提高每进程打开文件数限

在哪里可以找到不同网络架构上的基准测试

我在玩插座/线/叉,我想知道最好的是什么。我在想,一定有人已经详细说明了套接字服务不同体系结构的所有优点和缺点,列出了运行代码的基准测试

最后,我想用自己的代码运行这些不同的配置,看看哪种配置在不同的环境下运行得最好

和我交谈的许多人都说我应该只使用单线程选择。但是我看到了一个线程参数,当您在线程中存储状态信息以保持代码简单时。编写自己的状态结构与使用经过验证的线程体系结构的权衡是什么

我也被告知分叉是不好的。。。但是,当您在一台无法提高每进程打开文件数限制的机器上需要12000个连接时,分叉是一种选择!分叉也是一个很好的稳定性选择,当您有一个进程需要重新启动时,它不会干扰其他进程

对不起,这是我的一个较长的问题。。。很多变量都是空的

谢谢,
Chenz

很难回答这个问题,因为这在很大程度上取决于您的服务实际在做什么。它必须查询数据库吗?从文件系统读取文件?执行复杂的计算?去和其他服务人员谈谈?此外,客户端连接的寿命有多长?连接可能与其他连接有一些语义交互,或者它们都被视为彼此独立?您以后可能想考虑在多个服务器之间平衡服务的负载吗?(如果是这样的话,您现在可以考虑一下,以便从一开始就可以设计任何必要的帮助。)

正如您所暗示的,服务机器可能有一些限制,这些限制与各种技术交互,引导您走向一个或另一个答案。您有每个进程的文件描述符限制,但请记住,您也可能有一个固定大小的进程表!您希望有多少并发客户端

如果您的服务不断崩溃,您需要继续重新启动它,或者您认为您需要一个多进程模型,以便连接彼此隔离,那么您可能做错了。在这种情况下,稳定性非常重要,这意味着良好的实践和内存卫生,无论是在一般情况下还是在面对基于网络的攻击时


记住历史。。。fork()在Unix世界中很便宜,但在Windows上生成新进程的成本相对较高。哦,Windows线程是轻量级的,而线程对Unix来说一直有点陌生,只是最近才开始流行起来。

编辑:这是我要找的链接,这是一篇完整的论文,回答了你的问题

三种模型(fork、thread、select)都设计了web服务器。人们喜欢对web服务器进行基准测试

Libevent有一些基准测试和链接,指向如何选择select()和threaded模型,通常支持使用Libevent模型。