问题:
给S服务器发送需要响应的消息A, 在S服务器接受到消息后会处理数据库操作逻辑。 在压测时, 大量客户端同时发送消息A, 导致S服务器同时处理大量数据库操作逻辑, 最终导致消息A超时了。
分析:
1、查看压测时的服务器和数据库监控, 都没有达到最大负载,还有很大空间。
2、增加 DBComponent.TaskCount,结果没有明显变化。
请问该如何查找原因?
说明你数据库处理不过来了撒。减少数据库操作啊
egametang 可是数据库没有达到最大负载。
数据库的性能使用了另一个开源工具进行了测试,测试结果要比压测ET的时候负载大很多。
看下数据库操作,携程锁这里是不是key都是一样的, 如果是一样的,大量的请求,肯定会阻塞的。
evalli Key是一样的,因为都是DB操作。但id是不同的而且是随机分布的,理论上应该能同时运行TaskCount个数据库连接,但从数据库的监控上看,远远没有达到。TaskCount = 512,数据库监控到连接数100左右。
如果拆分协程锁类型,是按照表拆分么?
aznable 不会是有很多Id把512整除了吧
假设业务场景登录注册,登录这种查询操作账号是否存在,是不是可以不用加锁呢
豆腐ts 查询应该可以
我这里出问题的消息是写入数据库,不能去掉锁。
都不能去掉锁,锁是保证顺序的
二个,锁是降低并发数量
IxbxAxx 不会,测试时单独设置了随机的id
数据库索引加了么?
请问楼主查出问题了吗?