作为第三方外包软件公司,面对甲方软件上线前的压测,需要十分重视。在技术层面,主要表现为观测手段。
当前程序是JAVA写的,容器部署。那么监控就是监控该容器运行的cpu、内存、网络等指标,而且最重要的是,整个压测时间不会持续数小时,大概也就几分钟,所以1分钟1次数据上报就不合适了。
已经实验的方法:
(1):使用宝塔面板的实时容器实时监测功能。
(2):部署cadvisor,并且观察实时数据。
(3):基于夜莺监控,配合categraf及docker插件,实现5秒或者15秒的数据上报。
前两者在实时观测中效果不错,只是有点累人,因为需要点开几个页面,而且容器重启后,还需要再次点开。基于夜莺及搭配自己编写的大屏页面,加上5秒数据刷新,可以直接观测。
目前,我更倾向于使用夜莺监控了。
压测方法
经过之前一次压测,面对第二次压测的过程中,大概总结了一下大致过程:
(1)搜集压测信息,包括服务端和客户端配置参数、数据等。
(2)先测试一次,搞清楚服务依赖。比如这次的api服务依赖user服务,而user服务还依赖mysql服务。
(3)逐步增加jmeter用户数,直到api服务的cpu使用率、内存使用率、网卡使用率等达到100%。一般是cpu容易打到100%。而如果依赖mysql的话,实际上api服务所运行的容器运行指标一般不会打到100%,而且会一会儿高一会儿低,且延迟会变成,一般是在等mysql的响应了。