[seata]求助,按照demo测试,发现使用seata性能下降很多

2023-12-11 570 views
3

1129-3 按照网上的这个demo,用jmeter测试了一下。有GlobalTransactional注解的吞吐量只能没有注解的20% 1129 1129-2 这个正常么?

回答

4

您的集群构建模式是什么?您的客户端到 Seata-Server 的延迟是多少? Seata-Server 到其存储的延迟是多少?你的集群架构模式是什么?你的客户端与seata-server的延迟是多少?seata-server与它的功耗是多少?

3

我发现我慢的地方了,我查询了库存,然后外贸的计数后进入。如果我去掉这一步,那么他的成绩几乎是没有影响的 1130

3

如果你在下面写我的sql,而不是先查询然后更新怎么办? update stock set count=count-2 where id=? and count>=? 我怀疑认为你的内容没有改变,受影响的行数为0并且被seata忽略。一种版本的seata的处理方式如下代码所示,请告诉我您正在使用的seata版本

    protected T executeAutoCommitFalse(Object[] args) throws Exception {
        if (!JdbcConstants.MYSQL.equalsIgnoreCase(getDbType()) && isMultiPk()) {
            throw new NotSupportYetException("multi pk only support mysql!");
        }
        TableRecords beforeImage = beforeImage();
        T result = statementCallback.execute(statementProxy.getTargetStatement(), args);
        int updateCount = statementProxy.getUpdateCount();
        if (updateCount > 0) {
            TableRecords afterImage = afterImage(beforeImage);
            prepareUndoLog(beforeImage, afterImage);
        }
        return result;
    }
7

只是改变SetCount操作?我明白这只是一个记忆操作。

3

你是对的,我发现undo日志中没有记录任何数据。sql被seata忽略了。我使用的seata版本是2.0.0。

我的seata-server配置是默认的,我的seata-server的存储模式、配置类型和注册表模式都是文件。数据源代理模式是AT。其实我只启动了spring-jpa-seata的例子,和一个seata-server,并没有改变......我如何检查我的客户端和seata-server之间的延迟?

9

缓慢的部分不应该在这里,因为这只是一个内存操作,理论上不应该有任何性能开销。如果你能将你的 demo 上传到 git 会很有帮助,因为这样会更容易分析原因。