1、背景和现状
云集架构整体部署在云上,其中Nginx机器采用8核16G部署,Tomcat/Dubbo机器采用4核8G部署,基本上都是采用单机单服务部署形式,一般JVM最大内存占用4G。从CPU使用率来看,基本负载偏低,从资源利用率来看,服务器资源可以进一步进行优化。
资源优化需要先对系统容量进行评估,这里涉及到WAF/CLB集群、Ngninx集群、Tomcat接入层、Dubbo服务层以及数据层(Redis,MySQL)等。目前云集的WAF/CLB集群都是按照百万级QPS标准来搭建的。
2、目标和方法论
由于Dubbo层比较欠缺相应的评估方法体系,且生产环境普遍存在资源利用不高的现状,本文重点探讨Dubbo服务层的容量评估方法。
a) 评估难点
要想评估一个Dubbo服务的机器数,核心是要相对准确预估出这个Dubbo服务的QPS峰值,而这个也是最困难的地方。
如果知道Dubbo服务的预估QPS峰值,简单的话可以根据引流压测的值来计算出机器数量,但这个是理论值没有实践参考。要结合实践的话,通常是将历史的QPS峰值和当时机器负载情况结合来进行分析。比如历史支撑过100WQPS时,使用了10台机器,但机器负载在20%左右。那么可以得到当QPS还是100W时,使用5台机器,那机器负载应该上升到40%左右,然后再通过缩容去验证。如果缩容后,机器负载其实只上升到30%附近,则后续再按此实践作为标准去缩容。这样每次的结论都是