一、遇到的问题
1由于没有压测机,所以使用了自己的mac 电脑作为压测机,之前在测试服测试时所有的指标都正常,没有出现很大的问题
在线上压测时,出现了线程数设置100,就错误率很高,最终压测不了
所以赶紧找问题,一开始以为是jmeter 设置的延迟时间问题,直接将延迟时间设置10000ms ,但是结果发现再次增大线程数还是直接报错了
最终在网上看到是因为本地电脑的端口最大从46-60 ,当采样数超过端口数量时,请求数直接上不去了。最终解决方案更改本地可用端口,或者更换压测机
2有些接口,当设置https 时不管线程数增大多少,tps 上不去,资源无压力,响应时间巨大
最终发现是网络带宽限制,因为公司网络最大100M带宽,所以请求都阻塞了
最后解决方法:增大带宽是不行的,只能调整jmeter 的参数
将https 更改成http ,并且将采样器中的httpclient4 请求模式更改为Java (这种只适用于单线程)
3下单接口tps 异常慢,开发不知道慢在哪里
解决方案:通过开发了解整个下单流程
1.获取商品详情 2.校验订单信息(是否用药助手) 3.获取活动信息 4.构建orderDetail 5.校验活动过记录 6.校验购买数量 7.校验订单数量 8.冻结丁当 9.更新库存 10.保存订单
具体询问每个步骤中可能出现慢sql 和调用外部接口的地方
如果怀疑哪个步骤慢,则通过注释该步骤代码,前后对比的方式来查看是否慢,以及慢的原因
一般解决方案:对于慢sql 去优化sql ,没有索引的加索引,数据量太大则分裤分表查询
对于有些数据采用直接读取缓存,并且优化相关下单步骤 中的判断逻辑
将有些步骤中的同步执行,更改为异步
4现上监控发现服务在一天内fullGC频率较高,而系统资源没怎么消耗
初步怀疑内存泄漏,怀疑原因:每次fullGC时,堆内存并没有全部释放掉,大概依然占用400M 空间
jvm 参数设置问题,通过运维了解到,jvm参数没有设置新声代大小
部分微服务的堆内存占用一直过高,就算平时不做活动依然占用很高,这个需要排查,怀疑是在实现部分业务时生成了较大类对象用于查库(因为公司业务复杂性决定)
以上这些未被验证,开发也没有积极配合查询
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)