seata 注册中心和配置中心使用nacos,应用部署在k8s容器,正常运行两三天后,GlobalTransactional失效

sr4lhrrt  于 2022-12-31  发布在  Nacos
关注(0)|答案(5)|浏览(380)
  • [√ ] I have searched the issues of this repository and believe that this is not a duplicate.

Ⅰ. Issue Description

注册中心和配置中心使用nacos,应用部署在k8s容器,使用AT模式,开始事务创建和提交都正常。

正常运行两三天后,seata就失效了,原来GlobalTransactional注解下的数据库操作不会生成xid,只走本地数据库事务。且日志中每隔30s一直有channel inactive信息

Ⅱ. Describe what happened

channel inactive信息:

2020-05-22 15:14:26.592 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:263 -remove unused channel:[id: 0xd904db76, L:0.0.0.0/0.0.0.0:8091 ! R:/127.0.0.1:55118]
2020-05-22 15:14:56.619 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:254 -127.0.0.1:55130 to server channel inactive.
2020-05-22 15:14:56.619 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:263 -remove unused channel:[id: 0x370471ba, L:0.0.0.0/0.0.0.0:8091 ! R:/127.0.0.1:55130]
2020-05-22 15:15:26.630 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:254 -127.0.0.1:55138 to server channel inactive.
2020-05-22 15:15:26.630 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:263 -remove unused channel:[id: 0x46f7d33a, L:0.0.0.0/0.0.0.0:8091 ! R:/127.0.0.1:55138]
2020-05-22 15:15:56.642 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:254 -127.0.0.1:55142 to server channel inactive.
2020-05-22 15:15:56.642 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:263 -remove unused channel:[id: 0x2c8e3ae4, L:0.0.0.0/0.0.0.0:8091 ! R:/127.0.0.1:55142]
2020-05-22 15:16:26.650 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:254 -127.0.0.1:55148 to server channel inactive.
2020-05-22 15:16:26.650 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:263 -remove unused channel:[id: 0x9a587716, L:0.0.0.0/0.0.0.0:8091 ! R:/127.0.0.1:55148]
2020-05-22 15:16:56.682 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:254 -127.0.0.1:55158 to server channel inactive.
2020-05-22 15:16:56.682 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:263 -remove unused channel:[id: 0xeaaf6fcc, L:0.0.0.0/0.0.0.0:8091 ! R:/127.0.0.1:55158]
2020-05-22 15:17:26.691 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:254 -127.0.0.1:55166 to server channel inactive.
2020-05-22 15:17:26.691 INFO [NettyServerNIOWorker_1_8]io.seata.core.rpc.netty.AbstractRpcRemotingServer.handleDisconnect:26

当前网络连接情况:

[xxx bin]$ netstat -ant | grep 8091
tcp        0      0 127.0.0.1:55272         127.0.0.1:8091          TIME_WAIT
tcp        0      0 127.0.0.1:55282         127.0.0.1:8091          TIME_WAIT
tcp6       0      0 :::8091                 :::*                    LISTEN
tcp6       0      0 172.26.128.234:8091     172.26.51.187:11956     ESTABLISHED
tcp6       0      0 172.26.128.234:8091     172.26.51.187:58181     ESTABLISHED
tcp6       0      0 172.26.128.234:8091     172.26.51.181:10469     ESTABLISHED
tcp6       0      0 172.26.128.234:8091     172.26.51.190:27776     ESTABLISHED
tcp6       0      0 172.26.128.234:8091     172.26.51.190:24333     ESTABLISHED
tcp6       0      0 172.26.128.234:8091     172.26.51.181:61864     ESTABLISHED
tcp6       0      0 172.26.128.234:8091     172.26.51.190:26168     ESTABLISHED
tcp6       0      0 172.26.128.234:8091     172.26.51.190:59790     ESTABLISHED

Ⅲ. Describe what you expected to happen

长期运行稳定

Ⅵ. Environment:

  • JDK version : 1.8
  • OS : centos7
  • Others: seata-server 1.2.0
  • maven:
<dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
            <version>1.2.0</version>
        </dependency>
xzabzqsa

xzabzqsa1#

@majjfootman Any error information? Is automatic degrade configured?

h9a6wy2h

h9a6wy2h2#

Thank you for attention, there was no error information,just GlobalTransactional not effect, and seata-server's channel inactive logs continues output.

Seata-server nacos configures were below:

transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableClientBatchSendRequest=false
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3
service.vgroupMapping.mall-goods-group=default
service.vgroupMapping.mall-order-group=default
service.enableDegrade=false
service.disableGlobalTransaction=false
client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=false
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://xxxxx?useUnicode=true
store.db.user=seata
store.db.password=xxxxx
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
lock.mode=db
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.log.exceptionRate=100
transport.serialization=seata
transport.compressor=none
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

Seata-server's registry.conf configure:

registry {
  type = "nacos"
  nacos {
    application = "mall-seata"
    serverAddr = "nacos-addr"
    namespace = ""
    cluster = "default"
  }
}

config {
   type = "nacos"
   nacos {
     serverAddr = "nacos-addr"
     namespace = ""
     group = "SEATA_GROUP"
     username = ""
     password = ""
   }
}

Seata client yml configures:

seata:
  enabled: true
  applicationId: xxxxxx
  txServiceGroup: xxxxxx-group # 事务群组(可以每个应用独立取名,也可以使用相同的名字)
  enable-auto-data-source-proxy: true
  client:
    rm-report-success-enable: true
    rm-table-meta-check-enable: false # 自动刷新缓存中的表结构(默认false)
    rm-report-retry-count: 5 # 一阶段结果上报TC重试次数(默认5)
    rm-async-commit-buffer-limit: 10000 # 异步提交缓存队列长度(默认10000)
    rm:
      lock:
        lock-retry-internal: 10 # 校验或占用全局锁重试间隔(默认10ms)
        lock-retry-times:    30 # 校验或占用全局锁重试次数(默认30)
        lock-retry-policy-branch-rollback-on-conflict: true # 分支事务与其它全局回滚事务冲突时锁策略(优先释放本地锁让回滚成功)
    tm-commit-retry-count:   3 # 一阶段全局提交结果上报TC重试次数(默认1次,建议大于1)
    tm-rollback-retry-count: 3 # 一阶段全局回滚结果上报TC重试次数(默认1次,建议大于1)
    undo:
      undo-data-validation: true # 二阶段回滚镜像校验(默认true开启)
      undo-log-serialization: jackson # undo序列化方式(默认jackson)
      undo-log-table: undo_log  # 自定义undo表名(默认undo_log)
    log:
      exceptionRate: 100 # 日志异常输出概率(默认100)
    support:
      spring:
        datasourceAutoproxy: true
  service:
    enable-degrade: false # 降级开关
    disable-global-transaction: false # 禁用全局事务(默认false)
    vgroupMapping: 
      mall-goods-group: default # TC 集群(必须与seata-server保持一致)
  transport:
    shutdown:
      wait: 3
    thread-factory:
      boss-thread-prefix: NettyBoss
      worker-thread-prefix: NettyServerNIOWorker
      server-executor-thread-prefix: NettyServerBizHandler
      share-boss-worker: false
      client-selector-thread-prefix: NettyClientSelector
      client-selector-thread-size: 1
      client-worker-thread-prefix: NettyClientWorkerThread
    type: TCP
    server: NIO
    heartbeat: true
    serialization: seata
    compressor: none
    enable-client-batch-send-request: true # 客户端事务消息请求是否批量合并发送(默认true)
  registry:
    type: nacos
    nacos:
      application: mall-seata
      server-addr: xxxxxxxxx:8848
      namespace:
      cluster: default
  config:
    type: nacos
    nacos:
      namespace:
      server-addr: xxxxxxxxx:8848
      group: SEATA_GROUP
      cluster: default
mzmfm0qo

mzmfm0qo3#

我1.3版本 也有这个问题

rks48beu

rks48beu5#

***@***.***Scope 注解的原因,每次刷新配置,导致@GlobalTransactional 注解失效。…

------------------ 原始邮件 ------------------ 发件人: "seata/seata" ***@***.***>; 发送时间: 2021年3月18日(星期四) 上午10:51 ***@***.***>; ***@***.******@***.***>; 主题: Re: [seata/seata] 注册中心和配置中心使用nacos,应用部署在k8s容器,正常运行两三天后,GlobalTransactional失效 (#2714) 请问解决了吗 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

相关问题