大家好,前两篇我们讲了全链路压测的含义和整体架构。以及5种测压方案。前两篇基本属于比较理论的内容。今天就来聊点实事,带大家做个压测。如果你对前两篇文章不了解,可以先阅读。厂里最爱的全链路压测意义何在?四种压测方案详细对比分析【代码层面】全链路压测整体架构设计,五种实现方案7环境准备7.1需要启动虚拟机或linux服务器启动运行的环境服务列表环境服务ip端口注意mysql172。18.0.103306数据库服务rabbitMQ172.18.0.205672,5672RabbitMQ消息服务redis172.18.0.306379Redis缓存服务nacos172.18.0.408848微服务注册中心skywalking172.18.0.501234,11800,12800skywalkinglink2ui-08ui.1serverwalkinglink2ui-08ui.1serverlinktrackingAPM服务UI7.2应用服务列表应用服务可以单独部署也可以在idea中启动服务ip端口备注order-service127.0.0.18001orderserviceaccount-service127.0.0.18002accountservicestorage-service127.0.0.18003datastorageservicenotice-service127.0.0.18004notificationservice7.3docker-compose编排环境我们的docker-compose只是搭建环境,具体的微服务可以在本地运行,也可以在容器中运行。版本:'2'服务:mysql:图像:mysql:5.7主机名:mysqlcontainer_name:mysql网络:docker-network:ipv4_address:172.18.0.10端口:-“3306:3306”环境:MYSQL_ROOT_PASSWORD:根卷:-“/tmp/etc/mysql:/etc/mysql/conf.d"-"/tmp/data/mysql:/var/lib/mysql"rabbitMQ:image:rabbitmq:managementhostname:rabbitMQcontainer_name:rabbitMQnetworks:docker-network:ipv4_address:172.18.0.20端口:-“5672:5672”-“15672:15672”redis:图像:redis主机名:rediscontainer_name:redis网络:docker-network:ipv4_address:172.18.0.30端口:-“6379:6379”卷:-"/tmp/etc/redis/redis.conf:/etc/redis/redis.conf"-"/tmp/data/redis:/data"命令:redis-server/etc/redis/redis.confnacos:image:nacos/nacos-服务器主机名:nacoscontainer_name:nacosdepends_on:-mysql网络:docker-network:ipv4_address:172.18.0.40端口:-“8848:8848”环境:模式:独立卷:-“/tmp/etc/nacos/application.properties:/home/nacos/conf/application.properties"skywalking:image:apache/skywalking-oap-serverhostname:skywalkingcontainer_name:skywalkingnetworks:docker-network:ipv4_address:172.18.0.50ports:-"1234:1234"-"11800:11800"-"12800:12800"skywalkingui:图片:apache/skywalking-ui主机名:skywalkingui容器名称:skywalkingui取决于:-skywalking网络:docker-network:ipv4_address:172.18.0.60环境:SW_OAP_ADDRESS:172.18.0.50:12800端口:-“8080:8080networksipnet:doc”配置:-子网:172.18。0.0/16网关:172.18.0.17.4初始化数据初始化用户数据和产品数据给nacos配置feign、hystrix、ribbon等统一配置#配置超时feign:hystrix:enabled:true#开启fusehttpclient:enabled:truehystrix:threadpool:default:coreSize:50maxQueueSize:1500queueSizeRejectionThreshold:1000command:default:execution:timeout:enabled:trueisolation:thread:timeoutInMilliseconds:60000ribbon:Connect00Timeout:10fulllinktest8.1jmeter配置配置压测数据,配置压测次数测试线程100010轮压力测试8.2第一轮压力测试8.2.1链接分析与优化我们发现了一个调用时间在1S左右的链接。分析发现调用存储服务的时候耗时比较长,但是调用数据库的时候没用多久。基本解释是存储服务的连接池耗尽了。调用时间过长8.2.2优化数据库连接池,将存储服务的连接池从原来的最大10个调整为100个。耗时。这种情况可以考虑使用fegin的连接池优化或者增加新的节点。8.3.1观察消费节点,发现消费速度很慢,堆积了大量的消息。查看storage-service的actualPlaceOrder端点信息,发现平均响应时间为200ms左右查看断点link/storage/order/actualPlaceOrder,发现是事务提交慢导致的。这时候需要优化mysql服务器。9Skywalking使用9.1Skywalking模块列。:查看被监控服务的运行状态拓扑图:以拓扑图的形式显示服务之间的直接关系,并以此为切入点查看相关信息跟踪:以接口列表的形式显示,跟踪内部调用接口流程性能分析:对单个端点进行采样分析,可以查看堆栈信息告警:触发告警的告警列表,包括实例、请求超时等。自动刷新:刷新当前数据内容。9.2仪表盘第一栏:不同内容主题的监控面板,第二栏应用/数据库/容器等:操作,包括编辑/导出当前数据/导入展示数据/过滤展示不同的服务端点第三栏:不同纬度展示,Service/Instance/Endpoint9.3展示栏9.3.1Global全局维度第一栏:Global,Server,Instance,Endpoint不同展示面板,可以调整内部内容Servicesload:servicerequestsperminuteSlowServices:slowresponseservice,unitmsUn-Healthservices(Apdex):Apdex性能指标,1为满分。GlobalResponseLatency:百分比响应延迟,不同百分比延迟时间,单位msGlobalHeatmap:服务响应时间热分布图,根据时间段内不同响应次数的多少显示颜色深浅Bottombar:显示数据的时间间隔,点击调整。9.3.2服务维度ServiceApdex(数字):当前服务评分ServiceApdex(折线图):不同时间的Apdex得分SuccessfulRate(数字):请求成功率SuccessfulRate(折线图):不同时间的请求成功率ServiceLoad(number):每分钟请求数ServiceLoad(折线图):不同时间每分钟请求数ServiceAvgResponseTimes:平均响应延迟,单位msGlobalResponseTimePercentile:百分比响应延迟ServicesInstancesLoad:每个数ofrequestsperminuteoftheserviceinstanceShowServiceInstance:每个服务实例的最大延迟ServiceInstanceSuccessfulRate:每个服务实例的请求成功率9.3.3实例实例维度ServiceInstanceLoad:每个服务实例的每分钟请求数currentinstanceServiceInstanceSuccessfulRate:当前实例的请求成功率ServiceInstanceLatency:当前实例的响应延迟JVMCPU:jvmJVMMemory占用的CPU百分比:JVM内存的大小,在mJVMGCTime:JVMgarbagecollectiontime,includingYGCandOGCJVMGCCount:JVM垃圾回收次数,包括YGC和OGCCLRXX:类似于JVM虚拟机,这里就不用解释了。9.3.4Endpoint端点(API)维度EndpointLoadinCurrentService:每个端点每分钟的请求数SlowEndpointsinCurrentService:每个端点最慢的请求时间,单位msSuccessfulRateinCurrentService:每个端点Endpoint的请求成功率Load:当前端点在每个时间段的请求数据EndpointAvgResponseTime:当前端点每个EndpointResponseTimePercentile:当前端点在每个时间段的响应时间百分比EndpointSuccessfulRate:当前端点的请求成功率各时间段终点9.4延期图1:选择不同的服务关联拓扑2:查看单个服务相关的内容3:服务之间的连接4:分组显示服务拓扑9.5Track左侧:api接口列表,红色-异常请求,蓝色-右侧正常request:api跟踪列表,连接每个端点的api请求的顺序和时间TimeMonitoringDuration:监控需要多长时间?初始监控时间:多少秒后采集。监控间隔:多少秒采集一次。您也加入如果本文对您有帮助,欢迎关注点赞`,您的支持是我坚持创作的动力。转载请注明出处!
