但这个也只是理论上的峰值,在实际项目中,单库是绝达不到1.6W写入的,并且还是涉及到多表操作的情况下。
实际上根据《高性能MySQL》第三版 1.5小节,在如下的测试环境中
测试机器Cisco UCSC250
内存384GB
存储引擎是InnoDB
测试的数据集2.5GB
MySQL的buffer pool设置为4GB
所以在内存为384G的机器上,吞吐量不会超过8000。那么384G机器要多少钱呢?
这是64G机器的价格,因此384=64*6 6*1.8W=10.8W/年
因此,如果要并发支持到8000,光数据库就至少需要10W/Y。当然,这是假设请求在1s内返回的情况,假设大家允许服务能在5s内返回,那么此时并发能支持到4W。还是在不考虑服务器,网络损耗的情况下,实际上是远远达不到的。
所以,用5w来支持38w并发,是绝不可能的。
回到大家刚才的计算,假设数据库吞吐量到达理论峰值,能支持8000用户同时访问,如果每个客户能等待5s的化,能支持4w用户(前提是这些用户不可以同时访问,需要在5s内做到均匀分布,此时需要通过限流等手段来实现)
要支持8000用户同时访问,又需要多少个应用服务器呢?
假设大家使用tomcat服务,每个线程所占空间为8M,那么光tomcat线程就需要: 8000*8=64000=64G,当然还需要有主机内存,损耗啥的,按照一倍计算就是128G,那么需要是2*1.8W=3.6W
所以,如果需要支持4w个用户5s延时的访问,需要3.6+10.8= 14.4w rmb
这还只是服务器的钱,不算开发成本在内
那么,如果要支持38w的并发报名呢?这已经是一个相当大的并发量了,首先需要考虑的是抛弃掉一部分流量,可以在cdn就直接抛弃,或是nginx,或者直接在应用服务器上,比如在这种情况下就只能保持8000/380000 = 2%,只能有2%的请求允许进来。
可以通过nginx+redis的方式抛弃掉98%的请求,这样可以不用浪费应用服务器资源。或者直接在应用服务器上做操作,抛弃掉无法响应的请求,避免流量拖垮整个系统。
360文档卫士怎么用,香网多少字签约,pp助手3.0怎么导入存档