当前位置:  开发笔记 > 编程语言 > 正文

是否有10000客户端/秒问题的解决方案的现代审查

如何解决《是否有10000客户端/秒问题的解决方案的现代审查》经验,为你挑选了3个好方法。

(通常称为C10K问题)

是否有更现代的c10k问题解决方案评论(最后更新时间:2006年9月2日),特别关注Linux(epoll,signalfd,eventfd,timerfd ..)和像libev或libevent这样的库?

在现代Linux服务器上讨论所有已解决但仍未解决的问题的东西?



1> joe snyder..:

C10K问题通常假设您正在尝试优化单个服务器,但正如您引用的文章指出"硬件不再是瓶颈".因此,要采取的第一步是确保在混合中投入更多硬件并不是最简单和最便宜的.

如果我们有一个500美元的盒子每秒服务X个客户,那么购买另一个500美元的盒子来提高生产能力的效率要高得多,而不是让一个员工吞噬谁知道多少小时和美元试图弄清楚如何挤压更多走出原来的盒子.当然,假设我们的应用程序是多服务器友好的,我们知道如何负载平衡等等...


如果有人想写一个高性能的图书馆来节省你的钱,可能还有成千上万的人呢?
这是一种糟糕的能源浪费方式.我们现在不应该这样做,因为环境成本上升很多(连同电价).Twitter在传入的推文上处理大约800KB/s,需要100,000台服务器来处理它只是这种想法的疯狂结果.

2> Carl Smotric..:

巧合的是,就在几天前,Programming Reddit或者Hacker News提到了这篇文章:

成千上万的线程和阻止IO

在Java的早期,我的C编程朋友嘲笑我用阻塞线程做套接字IO; 那时,别无选择.如今,凭借丰富的内存和处理器,它似乎是一种可行的策略.

这篇文章的日期是2008年,所以它将你的视野提升了几年.


我更关心让damjan.mk开心.但请不要误解我的评论:这种方法在普通商店购买的PC上运行良好,这些天很难找到不到双核CPU和2G内存.
我相信你的硬件供应商很高兴.

3> carlsborg..:

要回答OP的问题,您可以说今天的等效文档不是关于优化单个服务器以进行加载,而是优化整个在线服务以进行加载.从这个角度来看,组合的数量是如此之大,以至于您所寻找的不是文档,它是一个收集此类架构和框架的实时网站.这样的网站存在,其名称为www.highscalability.com

附注1:

我认为投入更多硬件是一个长期解决方案的信念:

与单个服务器的成本相比,"获得"性能的工程师的成本可能很高.扩展时会发生什么?假设您有100台服务器.服务器容量提高10%可以每月为您节省10台服务器.

即使你只有两台机器,你仍然需要处理性能峰值.在负载下正常降级的服务与发生故障的服务之间的区别在于有人花时间优化负载方案.

附注2:

这篇文章的主题有点误导.CK10文档并未尝试解决每秒10k客户端的问题.(每秒的客户端数量是无关紧要的,除非您在有限延迟下定义工作负载和持续吞吐量.我认为Dan Kegel在撰写该文档时已经意识到这一点.).将其视为构建并发服务器的方法概要,以及相同的微基准测试.也许在当时和现在之间发生了变化的是,您可以在一个时间点假设该服务是针对提供静态页面的网站.今天,该服务可能是一个noSQL数据存储区,一个缓存,一个代理或数百个网络基础设施软件之一.


我同意你的观点,但你需要更新你的性能工程师的收支平衡点.合理的服务器(8核,7 GB RAM)在亚马逊的EC2上每小时花费0.68美元.削减10台服务器每年只能节省6万美元.这不会让你成为一名性能工程师.
推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有