我发现,当我通过调试器连接到应用程序并开始调试时, 与赤土陶器服务器的连接丢失(?)并且在兵马俑服务器日志中出现了下一条消息:
2012-03-30 13:45:06,758 [L2_L1:TCComm主选择器Thread_R(听) 0.0.0.0:9510)] WARN com.tc.net.protocol.transport.ConnectionHealthChecker Impl。 DSO服务器 - 127.0.0.1:55112可能在Long GC中。自上次ping回复以来的GC计数:1 2012-03-30 13:45:27,761 [L2_L1:TCComm主选择器Thread_R (听0.0.0.0:9510)]警告 com.tc.net.protocol.transport.ConnectionHealthChecker Impl。 DSO服务器 - 127.0.0.1:55112可能在Long GC中。自上次ping回复以来的GC计数:1 2012-03-30 13:45:31,761 [L2_L1:TCComm主选择器Thread_R (听0.0.0.0:9510)]警告 com.tc.net.protocol.transport.ConnectionHealthChecker Impl。 DSO服务器 - 127.0.0.1:55112可能在Long GC中。自上次ping回复以来的GC计数:2
...
2012-03-30 13:46:37,768 [L2_L1:TCComm主选择器Thread_R(听) 0.0.0.0:9510)]错误com.tc.net.protocol.transport.ConnectionHealthChecke rImpl。 DSO服务器 - 127.0.0.1:55112可能在Long GC中。自上次ping回复以来的GC计数:10。但它太长了。不再重试2012-03-30 13:46:38,768 [HealthChecker]信息 com.tc.net.protocol.transport.ConnectionHealthCheckerImpl。 DSO服务器 - 127.0.0.1:55112是DEAD 2012-03-30 13:46:38,768 [HealthChecker] ERROR com.tc.net.protocol.transport.ConnectionHealthCheckerImpl:DSO 服务器 - 声明连接已死 ConnectionID(1.0b1994ac80f14b7191080bdc3f38582a)空闲时间45317ms 2012-03-30 13:46:38,768 [L2_L1:TCWorkerComm#0_R]警告 com.tc.net.protocol.transport.ServerMessageTransport - ConnectionID(1.0b1994ac80f14b71 91080bdc3f38582a):关闭事件: com.tc.net.core.TCConnectionJDK14@5158277:connected:false,closed: true local = 127.0.0.1:9510 remote = 127.0.0 .1:55112 connect = [Fri Mar 30 13:34:22 BST 2012] idle = 2001ms [207584 read,229735 write]。状态 : DISCONNECTED
...
2012-03-30 13:46:38,799 [L2_L1:TCWorkerComm#0_R] INFO com.tc.objectserver.persistence.sleepycat.SleepycatPersistor - 已删除 客户状态:ChannelID = [1] 2012-03-30 13:46:38,801 [WorkerThread(channel_life_cycle_stage,0)] INFO com.tc.objectserver.handler.ChannelLifeCycleHandler - :Received tran 运动断开。关闭客户端ClientID [1] 2012-03-30 13:46:38,801 [WorkerThread(channel_life_cycle_stage,0)] INFO com.tc.objectserver.persistence.impl.TransactionStoreImpl - shutdownC lient():从DB中删除txns:0
发生这种情况后,任何带缓存的操作(如getWithLoader
)都无法应答,直到赤土陶器服务器不会再次重启。
问题:如何修复/重新配置?我认为,如果某些(任何)原因应用程序将挂起/ staled / etc,它也可能在生产中发生(实际上有时会发生)。
答案 0 :(得分:1)
这只是为了让你入门。
当适用的HealthCheck失败时,服务器和客户端之间的TC连接被认为是死的。 HealthCheck的默认值假设一个非常稳定和高性能的网络。我建议您熟悉的详细信息和计算方法http://www.terracotta.org/documentation/3.5.2/terracotta-server-array/high-availability#85916
通常你会开始 a)确保您的网络偶尔不会打嗝 b)将TC HealthCheck值设置得更高
如果问题仍然存在,我建议直接在TC论坛上发帖(即使你只使用开源版,他们也会帮助你,但可能需要几天的时间来回复。