2009-11-25 39 views
1

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

我在玩套接字/线程/叉,我想知道最好的是什么。我认为必须有一个地方已经有人已经阐述了不同体系结构的所有优点和缺点,并列出了运行代码的基准测试。

最终我想用我自己的代码运行这些不同的配置,并查看哪些运行在不同情况下最好。

我跟我说过的很多人说我应该只使用单线程选择。但是当你在线程中存储状态信息以保持代码简单时,我会看到线程的一个参数。编写我自己的状态结构与使用经过验证的线程架构之间的折衷标记是什么?

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

对不起,这是我较长的问题之一......这么多变量都是空的。

感谢, Chenz

回答

0

这是很难回答这个问题,因为这在很大程度上取决于你的服务究竟是干什么。它是否需要查询数据库?从文件系统读取文件?执行复杂的计算?去谈谈其他一些服务?另外,客户端连接有多久?可能连接与其他连接有一些语义上的相互作用,还是它们都被视为彼此独立?您可能想考虑稍后在多台服务器上负载均衡您的服务吗? (如果是这样,那么现在就可以有用地考虑这一点,以便可以从一开始就设计出任何必要的帮助。)

正如您所提示的那样,服务机器可能具有与各种技术相互作用的限制,将您指向一个答案或其他。你有一个per-process文件描述符限制,但是请记住,你也可能有一个固定大小的进程表!无论如何,你期望有多少并发客户?

如果你的服务一直崩溃,你需要重新启动它,或者你认为你想要一个多进程模型,以便连接彼此隔离,那么你可能做错了。在这种背景下,稳定性是非常重要的,这意味着良好的习惯和记忆卫生,无论是在一般情况下,还是面对基于网络的攻击。

记住历史...... fork()在Unix世界很便宜,但在Windows上产生相对昂贵的新进程。 OTOH,Windows线程是轻量级的,而线程对于Unix来说一直是一个陌生人,只是最近才变得普遍。

+0

这就是为什么多种基准证明会有用。 – 2009-12-07 15:05:09

相关问题