高分请教大牛:如何设计能够达到100万QPS
为了能够让问题变得简单,假设有以下限制:
1、服务器全部采用普通的服务器,价格1万5左右,2G内存,CPU主频2GHz
2、网络带宽:100M
3、假设使用lvs+nginx+tomcat,nginx做静态请求
4、假设nginx处理静态网页的并发量是2万/s

如何设计能够达到100万QPS。请描述大概需要几台lvs,几台nginx。

如果这种方式不能支持,应该需要怎么设计才能达到这么高的并发量?
------解决方案--------------------
没有配置过这样的,待测试
------解决方案--------------------
100Mbps 的带宽,要支持100万QPS,意味着每个查询只能分到 100bit  的流量,也即大约 12 字节流量,这系统貌似啥也干不了。。。

那么假定每个页面是 100KB,这个规模算是不大的吧。100万QPS约需要 100GBps 的流量,考虑到控制信号的开销,保底大概需要 1000Gbps 的实际带宽。 

1Tbps的带宽,貌似没有负载均衡设备可以支持。所以恐怕要用 DNS 负载均衡 或 CDN 做第一级分流。
------解决方案--------------------

引用:

为了能够让问题变得简单,假设有以下限制:
1、服务器全部采用普通的服务器,价格1万5左右,2G内存,CPU主频2GHz
2、网络带宽:100M
3、假设使用lvs+nginx+tomcat,nginx做静态请求
4、假设nginx处理静态网页的并发量是2万/s

如何设计能够达到100万QPS。请描述大概需要几台lvs,几台nginx。

如果这种方式不能支持,应该需要怎么设计才能达到这么高的并发量?

需要3~20万台服务器。
------解决方案--------------------

引用:

我有个疑问:为何很多博客里说,nginx优化的好,服务器内存放大点,甚至可以达到每秒10万、70万甚至200万的吞吐量呢?尤其是nginx官网上,如果使用64G内存,最大QPS可以达到200万!

这类测试都是极限测试,只考虑连接处理效率。也即是说页面规模和磁盘IO等都不是考量目标。
我几年前也做过这类测试,普通笔记本上面,Apache对1K大小的页面执行极限测试的话,QPS轻松逼近1W。
不过我没有研究Nginx官网上它的测试环境说明,不好具体进行评价。

引用:

另外,还有个疑问:很多博客中说,真实的web服务器,最高吞吐量能达到1000,就很高了。例如,百度的最大QPS也只有1万左右,并且这个数还是在百度使用了DNS+CDN之后的数据。如果百度有10个CDN节点,平均下来,每个cdn处的web服务器的最大吞吐量也只有1000左右。

真实系统的QPS严重取决于业务复杂度,这点你应该很清楚了。
不过百度最大QPS才1W,听起来相当不靠谱,至少也得放大10倍以上吧。