Terracotta Ehcache: сервер отключается во время отладки - PullRequest
0 голосов
/ 30 марта 2012

Я обнаружил, что когда я подключаюсь к приложению отладчиком и начинаю отлаживать, соединение с сервером терракоты теряется (?) И в журналах сервера терракоты появляются следующие сообщения:

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 может быть в длинном GC.Счетчик GC с момента последнего ответа пинга: 1 2012-03-30 13: 45: 27,761 [L2_L1: главный селектор TCComm Thread_R (прослушивание 0.0.0.0:9510)] WARN com.tc.net.protocol.transport.ConnectionHealthChecker Impl.Сервер DSO - 127.0.0.1:55112 может быть в длинном GC.Счетчик GC с момента последнего ответа пинга: 1 2012-03-30 13: 45: 31,761 [L2_L1: главный селектор TCComm Thread_R (прослушивание 0.0.0.0:9510)] WARN com.tc.net.protocol.transport.ConnectionHealthChecker Impl.Сервер DSO - 127.0.0.1:55112 может быть в длинном GC.Счетчик GC с момента последнего ответа пинга: 2

...

2012-03-30 13: 46: 37,768 [L2_L1: TCComm Main Selector Thread_R (прослушивание 0.0.0.0: 9510)] ОШИБКА com.tc.net.protocol.transport.ConnectionHealthChecke rImpl.Сервер DSO - 127.0.0.1:55112 может быть в длинном GC.Счетчик GC с момента последнего ответа пинга: 10. Но это слишком долго.Больше нет повторных попыток 2012-03-30 13: 46: 38,768 [HealthChecker] INFO com.tc.net.protocol.transport.ConnectionHealthCheckerImpl.Сервер DSO - 127.0.0.1:55112: DEAD 2012-03-30 13: 46: 38,768 [HealthChecker] ОШИБКА com.tc.net.protocol.transport.ConnectionHealthCheckerImpl: Сервер DSO - Объявлено, что соединение не работает (ID идентификатора соединения (1.0b1994ac80f14b7191080bdc3f3858317) is2012-03-30 13: 46: 38,768 [L2_L1: TCWorkerComm # 0_R] ПРЕДУПРЕЖДЕНИЕ com.tc.net.protocol.transport.ServerMessageTransport - ConnectionID (1.0b1994ac80f14b71 91080bdc3f38582a): ЗАКРЫТЬ СОБЫТИЕ: com.tC.5158277: подключено: false, закрыто: true local = 127.0.0.1: 9510 remote = 127.0.0 .1: 55112 connect = [Пт 30 марта 13:34:22 BST 2012] idle = 2001ms [чтение 207584, запись 229735].СОСТОЯНИЕ: ОТКЛЮЧЕНО

...

2012-03-30 13: 46: 38,799 [L2_L1: TCWorkerComm # 0_R] ИНФОРМАЦИЯ 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 -: получено tran sport connect.Завершение работы клиента ClientID [1] 2012-03-30 13: 46: 38,801 [WorkerThread (channel_life_cycle_stage, 0)] INFO com.tc.objectserver.persistence.impl.TransactionStoreImpl - shutdownC lient (): удаление txns из БД: 0

После этого любая операция с кешем, такая как getWithLoader просто не отвечает, пока сервер терракоты не будет перезапущен снова.

Вопрос: как это можно исправить / перенастроить?Я предполагаю, что это может произойти и в производстве (и на самом деле иногда случается), если по какой-либо (любой) причине приложение зависнет / устарело / и т.д.

1 Ответ

1 голос
/ 01 апреля 2012

Это только начало.

Соединения TC между сервером и клиентом считаются мёртвыми в случае сбоя соответствующего HealthCheck. Значения по умолчанию для HealthCheck предполагают очень стабильную и производительную сеть. Рекомендую ознакомиться с деталями и расчетами на

http://www.terracotta.org/documentation/3.5.2/terracotta-server-array/high-availability#85916

Так, как правило, вы начинаете с а) убедившись, что ваша сеть не дает сбой время от времени б) установка значений TC HealthCheck немного выше

Если проблема не исчезнет, ​​я бы порекомендовал публиковать сообщения непосредственно на форумах TC (они помогут вам, даже если вы используете только версию с открытым исходным кодом, однако для ответа может потребоваться несколько дней.

...