我有一个基于jgroup的应用程序,并使用netcat检查应用程序是否已启动并运行(Marathon中的healthcheck,管理应用程序启动顺序):
nc -z -w 1 app 7801
除了jgroup日志之外,一切都很好,除了以下例外:
WARN org.jgroups.protocols.TCP - JGRP000006: failed accepting connection from peer
app | java.io.EOFException: null
app | at java.io.DataInputStream.readFully(DataInputStream.java:197)
app | at org.jgroups.blocks.TCPConnectionMap$TCPConnection.readPeerAddress(TCPConnectionMap.java:511)
app | at org.jgroups.blocks.TCPConnectionMap$TCPConnection.<init>(TCPConnectionMap.java:381)
app | at org.jgroups.blocks.TCPConnectionMap$Acceptor.handleAccept(TCPConnectionMap.java:303)
app | at org.jgroups.blocks.TCPConnectionMap$Acceptor.run(TCPConnectionMap.java:287)
app | at java.lang.Thread.run(Thread.java:745)
有没有办法以更合适的方式“ping”jgroup应用程序?
答案 0 :(得分:1)
是。如果启用了诊断(传输中为enable_diagnostics
,例如UDP
或TCP
),则可以使用probe.sh或netcat从所有或单个集群成员中提取信息。
默认使用7500
上的端口224.0.75.75
,但也可以设置这些属性。
您还可以编写一个简单的HEALTH
协议,它打开一个套接字(TCP或数据报)并响应简单的有效请求,例如:通过发回一个字节。