Наши процессы выполняются в системе Linux, использующей почти ТБ ОЗУ без включенной подкачки.
В результате происходит то, что наш процесс на какое-то время зависает по причине, которую я не могу понять, поэтому Zookeeper истекаетсеанса, как следует, и затем процесс возвращается к жизни без событий, показанных для запуска в журналах.
Мы столкнулись с подобной ситуацией, но когда наш процесс возвращается к жизни, то потеря соединения и сеанс- события истечения запускаются, чтобы мы могли справиться с этой ситуацией, обычно воссоздав связанный с процессом эфемерный узел в Zookeeper.Мы полагали, что это происходит из-за полного цикла ГХ.
Что нового в настоящее время, так это то, что процесс останавливается, но не происходит никаких событий после возвращения к жизни!Таким образом, нет никакого способа обнаружить, что наш сеанс истек.
Я думаю о том, чтобы просто следить за удалением нашего эфемерного узла и затем воссоздать его.Но мне интересно, правильно ли это делать, так как я до сих пор не знаю, почему процесс вообще зависает.
Увеличение тайм-аута сессии не вариант, потому что он слишком велик длянас уже.И мы все равно пытаемся обработать тайм-аут сеанса.
Итак, мои вопросы просто так:
- Может ли быть причина этому, кроме полного цикла GC?
- Почему наш процесс не запускает события отключения или истечения срока действия сеанса после возвращения в оперативный режим?
- Это обычно для контроля удаления эфемерного узла приложения и не полагаться на события для этого?
РЕДАКТИРОВАТЬ Я нашел кое-что очень интересное после увеличения подробностей регистрации для Zookeeper
DEBUG: [07:05:57] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:06:31] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:07:04] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:07:37] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:08:11] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:08:44] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:09:17] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:09:51] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:10:24] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:10:57] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:11:31] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:12:04] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:12:38] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:13:11] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:13:44] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
DEBUG: [07:14:18] [demo | HA | Manager] Got ping response for sessionid: 0x3000da76fa904b6 after 0ms [org.apache.zookeeper.ClientCnxn$SendThread.readResponse]
Если вы посмотрите внимательно, вы обнаружите, что разница во времени между каждым журналом~ 33 секунды.Находясь на моей машине, сообщение журнала отображается каждые ~ 1 секунду.Может ли это быть из-за задержки в сети?
РЕДАКТИРОВАТЬ
Running the mntr command returned the following stats
zk_version 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
zk_avg_latency 0
zk_max_latency 17657
zk_min_latency 0
zk_packets_received 1427134
zk_packets_sent 1596974
zk_num_alive_connections 64
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count 1394
zk_watch_count 592
zk_ephemerals_count 192
zk_approximate_data_size 181257
zk_open_file_descriptor_count 94
zk_max_file_descriptor_count 1048576
zk_fsync_threshold_exceed_count 1
Я считаю значение zk_max_latency очень высоким.Мне интересно, что это за задержка?Как я могу отладить причину этого значения?