我目前正在考虑为我的托pipe项目build立一个新的基础设施。 基本上,它将被托pipe与强调重点基于Django的应用程序。 当然,所有的基于Linux的都是以PostgreSQL作为数据库,以及nginx或Apache作为web服务器以及GUnicorn等。
现在我正在寻找租用服务器系统的市场,很难做出符合预算和所有标准的事情。 所以我想就以下问题征求意见。
我所能find的所有优惠都是使用单个高端XEON E3-12xx(Quads @> = 3.2Ghz)或许多核心Opteron(6000或更高,8核或更高,@ 2.00 – 2.40 GHz)。 从I / O POV来看,两者通常都带有电池的HW-RAID10,足够的内存以满足我的需求(24-32 GiB ECC-RAM)和1 Gbit / s的上行链路。 我发现一个单一的提议也相当不错,但是基于两个E5620 XEON,这是相当过时恕我直言,该系统提供与其他人相同的价格。
现在我被撕裂了。 在我看到的每个合成基准testing中,XEON的性能都超过了Opteron处理器 – 强调合成。 但是我坚信,当涉及并行处理很多事情的服务器的工作时(例如,更便宜的上下文切换),许多内核确实提供了很大的好处。 但是每个核心有1Ghz或更多的差异,我不再那么确定,因为在我的情况下,我正在比较不同的微架构(XEON和Opteron)以及不同的代。
所以我想问问社区:以应用程序为中心的Web服务器的更低核心速度或更低核心速度的更高速率,还必须处理数据库负载?
邮件系统是另一回事。 理想情况下,我想在三个不同的服务器上有邮件,数据库和networking。 但现在这不在预算之内。 因此,根据我为Web服务器获得的系统,邮件系统可能最终会在该系统上运行,我知道这将是次优的。 我在这里担心邮件系统的所有小写入会影响数据库和Web性能。 以32Gb的RAM为例,数据库将在不久的将来完全适应RAM,直到服务增长相当大(如果有的话)。
一个可能的(或多或less是最佳的)场景:在8核心Opteron 62xx @ 2 Ghz盒子上的networking和数据库(上面的其他一切)以及例如一个较小的E3-1230上的邮件系统。 但是我对Opteron的performance再一次感到担忧。 🙁
艰难的决定。 再次,我会很感激任何build议/帮助,我可以得到。
预先感谢了很多…
更新(11/11/11 @ 1518 GMT) :基本上我比较桑迪桥E3 – 12×0 XEONs与马尼库尔/苏黎世/英特拉格皓龙。 不幸的是,我无法使用基于Ivy Bridge的专用服务器。 基于apache基准testing和cpubenchmark.nettesting结果,E3-1270v1看起来像是一个真正的主力,即使是双E5620也是如此,大部分的Opteron都是令人难以置信的。 自然,这些testing大部分仍然是合成的,还有其他的瓶颈需要考虑。 但现阶段我想打下坚实的未来基础,所以我不会太容易受到CPU的限制。
我的直觉一直是以Web / db服务器为核心和/或处理器,而不是牺牲核心/处理器的数量来提高时钟频率。 所以看着E3-1270的4C设置,感觉就像是错误的事情。
顺便说一下,托pipe将是我提供给我的客户的产品,所以它不是一个我可以testing的产品。 基本上,它几乎总是基于Django的应用程序,主要是具有自定义function或自定义项目的CMS系统。
现在我真的在考虑一个很好的E3-1270系统作为组合的Web和DB服务器和一个E3-1220作为邮件系统。 无论是快速的RAID和大量的RAM自然。 我仍然很担心,真正的4C会在生产环境中很快出现问题。 :(但是,如果我得到一个基于Opteron 6274的系统,我将不得不在该系统上运行邮件系统,这并不是很理想,而且根据cpubenchmark.net,它不会太快,但是再次:综合基准。:(
基本上我自问:在现实世界的情况下,例如Opteron 6274或2x 6128是否会超越E3-1270?E3-1270还能赢吗? 这是一个坚实的基础是正确的决定吗?
再一次,如果有人对我有任何好的build议和/或build议,非常感谢,因为我现在被困在我脑中的反馈循环中。 🙂
更新(12/08/11 @ 1835 GMT)感谢大家的帮助。 现在我正在研究一个完全不同的方法:在Heroku或Google AppEngine上托pipe我的客户的项目,从而避免了大部分的麻烦。 ;)对于邮件系统来说,一个E3-12×0就完全够用了,所以我最终用一个组合的web / app / db服务器来节省自己所有的头痛,毕竟终究不会是很大的扩展性。 我将不得不做一些进一步的调查,如果这可能没有任何重大的限制…但我是充满希望的。 🙂
除了内核和性能之外,还有更多的问题。
如果你不期望太多的stream量,你可能会太担心。 如果您想将所有的应用程序放在一台服务器上,那么如果硬件出现问题,则可能会导致完全中断。 看看你是否可以去下面两台机器并分配负载。 为了提高性能,可以使用taskset将内核专用于PostgreSQL进程,以便数据库性能可以pipe理。
如果你pipe理好你的磁盘,那么你可能会获得更好的性能。 例如,在RAID 1中为pg_xlog设置2个磁盘。
长久的答案是,基准您的应用程序,并考虑冗余,如果你买不起宕机时间。 此外,比较云解决scheme的成本,这将有助于您的应用程序可以扩展。
这是一个复杂的主题,但不要忘记在这里另一个元素 – 你也比较不同代的硬件。 这不仅仅是一个纯粹的GHZ比较,你可以很好地比较过时的opterons(8核心只?是2×4,这是一个非常慢的核心相比,今天)与沙质桥梁/常春藤桥梁至强。 我将与Xeon一起,只是为了代代相传的问题。
(是的,我有同样的东西 – 一个四核心现代Xeon和双opteron有两个4插槽的sockets和整个性能的杀死大型机器,很快就被重新用作一个SAN系统只。
更多的内核将允许您处理更高的客户端数量,并且更less的上下文切换,这在理论上可以弥补时钟速度的差异。 缺点是在使用率低的时候,系统运行效率不高。
不要放大,扩大规模!
我从你的问题所理解的是,你期望很多的工作量,例如在你的networking服务器上点击。 因为你可能没有关于什么是托pipe,静态和dynamic内容的详细信息,如果dynamic使用什么技术,Java,C#,Python或G * d禁止使用PHP,现在不可能拿出解决办法,而不是它应该扩大规模。
我的build议? 使用一个相对便宜的硬件LB集群,可以在需要时扩展。 不要把所有的东西都放在一台机器上,这个机器的尺寸过大(昂贵)或者尺寸缩小(性能损失)。 但是,让自己开始小,随着stream量的增长而增长。
所以真正的负载平衡是你正在寻找的答案。