标签: jgroups

org.jgroups.protocols.UDP - 将消息发送到null失败

[hannel,192.168.0.46:40014] 15:08:03,642 - ERROR - org.jgroups.protocols.UDP - failed sending message to null (61 bytes)
java.lang.Exception: dest=/225.1.2.46:30446 (64 bytes)
    at org.jgroups.protocols.UDP._send(UDP.java:333)
    at org.jgroups.protocols.UDP.sendToAllMembers(UDP.java:283)
    at org.jgroups.protocols.TP.doSend(TP.java:1327)
    at org.jgroups.protocols.TP.send(TP.java:1317)
    at org.jgroups.protocols.TP.down(TP.java:1038)
    at org.jgroups.protocols.PING.sendMcastDiscoveryRequest(PING.java:220)
    at org.jgroups.protocols.PING.sendGetMembersRequest(PING.java:214)
    at org.jgroups.protocols.Discovery$PingSenderTask$1.run(Discovery.java:385)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
    at java.lang.Thread.run(Thread.java:595)
Caused by: java.io.InterruptedIOException: operation interrupted
    at java.net.PlainDatagramSocketImpl.send(Native Method)
    at java.net.DatagramSocket.send(DatagramSocket.java:612)
    at org.jgroups.protocols.UDP._send(UDP.java:324)
    ... 16 more
Run Code Online (Sandbox Code Playgroud)

这是在服务器上进行负载测试期间发生的.我应该担心吗?除了在日志中获取该消息之外,一切似乎都正常.

java networking jgroups

5
推荐指数
1
解决办法
1万
查看次数

JGroups吃着记忆

我目前的jgroups配置有问题,导致数千条消息卡在NAKACK.xmit_table中.实际上所有这些似乎最终都在xmit_table中,而几个小时后的另一个转储表明它们从未打算离开...

这是协议栈配置

UDP(bind_addr=xxx.xxx.xxx.114;
bind_interface=bond0;
ip_mcast=true;ip_ttl=64;
loopback=false;
mcast_addr=228.1.2.80;mcast_port=45589;
mcast_recv_buf_size=80000;
mcast_send_buf_size=150000;
ucast_recv_buf_size=80000;
ucast_send_buf_size=150000):
PING(num_initial_members=3;timeout=2000):
MERGE2(max_interval=20000;min_interval=10000):
FD_SOCK:
FD(max_tries=5;shun=true;timeout=10000):
VERIFY_SUSPECT(timeout=1500):
pbcast.NAKACK(discard_delivered_msgs=true;gc_lag=50;retransmit_timeout=600,1200,2400,4800;use_mcast_xmit=true):
pbcast.STABLE(desired_avg_gossip=20000;max_bytes=400000;stability_delay=1000):UNICAST(timeout=600,1200,2400):
FRAG(frag_size=8192):pbcast.GMS(join_timeout=5000;print_local_addr=true;shun=true):
pbcast.STATE_TRANSFER
Run Code Online (Sandbox Code Playgroud)

启动消息......

2010-03-01 23:40:05,358 INFO  [org.jboss.cache.TreeCache] viewAccepted(): [xxx.xxx.xxx.35:51723|17] [xxx.xxx.xxx.35:51723, xxx.xxx.xxx.36:53088, xxx.xxx.xxx.115:32781, xxx.xxx.xxx.114:32934]
2010-03-01 23:40:05,363 INFO  [org.jboss.cache.TreeCache] TreeCache local address is 10.35.191.114:32934
2010-03-01 23:40:05,393 INFO  [org.jboss.cache.TreeCache] received the state (size=32768 bytes)
2010-03-01 23:40:05,509 INFO  [org.jboss.cache.TreeCache] state was retrieved successfully (in 146 milliseconds)
Run Code Online (Sandbox Code Playgroud)

...表示到目前为止一切都很好.

设置为警告级别的日志并不表示除了某种情况之外出现了问题

2010-03-03 09:59:01,354 ERROR [org.jgroups.blocks.NotificationBus] exception=java.lang.IllegalArgumentException: java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

我猜的是不相关的,因为早在没有内存记忆问题的情况下就已经看到了它.

我一直在挖掘其中一台机器的两个内存转储器以找到奇怪的东西,但到目前为止还没有.除了可能来自不同协议的一些统计数据

UDP有

num_bytes_sent 53617832
num_bytes_received 679220174
num_messages_sent 99524
num_messages_received 99522
Run Code Online (Sandbox Code Playgroud)

虽然NAKACK有...... …

jgroups

5
推荐指数
1
解决办法
2860
查看次数

如何强制JGroups哪个节点创建协调器?

我正在寻找一种方法来强制JGroups使用特定的服务器作为协调器,如果该服务器不存在,则选择一个新的协调器,直到指定的协调器重新加入群集并接管为协调器.

在这种情况下,我们通过协调器监听主题以获取更新来向集群推送一些信息,但是获取和处理这些更新可能是资源密集型的,因此我们不希望它向外界提供任何服务.因此,在集群前面的负载均衡器中,我们将其设置为不发送给协调器.但是因为协调器是随机选出的,所以我们基本上需要关闭集群,直到只有一台机器在那里,然后重新启动集群的其余部分.

java jgroups cluster-computing

5
推荐指数
1
解决办法
2324
查看次数

低延迟消息队列

基本上,我有一个主节点,用于在工作节点之间分配任务。工作人员的数量可能会发生变化,这意味着工作人员无法在服务器端进行硬编码。Master向队列提交一个任务,其中一个worker接收该任务,处理它并返回结果。最关键的方面是低延迟。工作节点上的典型处理时间约为 100-300 毫秒,这意味着消息传递系统不应给处理时间增加明显的延迟。

目前我正在研究请求-响应 JMS 模式。这意味着master将任务提交到共享队列,worker将从队列中取出任务并将结果提交到主节点监听的另一个队列。主人会将响应与请求关联起来。

恐怕JMS可能会给系统带来延迟,这是不可接受的。也许我应该看看其他解决方案?比如 RabbitMQ、JGroups 还是 ZooKeeper?

如果 JMS 适合这里,您能推荐最快的 JMS 代理吗?目前我正在研究ActiveMQ

该解决方案的另一项要求是它应该能够在云端工作

activemq-classic jgroups jms rabbitmq apache-zookeeper

5
推荐指数
1
解决办法
2545
查看次数

EC2上jgroups通道丢失数据包的问题

在尝试在亚马逊的64位Linux AMI上运行的Jgroups 3.1.0-FINAL上设置EC2(大型实例)上的Infinispan时,我们一直看到不一致的网络故障.空缓存启动正常并且似乎工作了一段时间但是一旦缓存已满,新服务器获得同步会导致缓存锁定.

我们决定推出自己的缓存,但看到大致相同的行为.在同步期间正在交换10兆字节但它们没有被淹没.在应用程序级别有一个来回数据 - > ack对话,但看起来有些消息传递永远不会到达远程.

在查看UNICAST跟踪日志记录时,我看到以下内容:

# my application starts a cache refresh operation 
01:02:12.003 [Incoming-1,mprewCache,i-f6a9d986] DEBUG c.m.e.q.c.l.DistributedMapManager - i-f6a9d986: from i-d2e29fa2: search:REFRESH 
01:02:12.003 [Incoming-1,mprewCache,i-f6a9d986] INFO  c.m.e.q.c.l.DistributedMapRequest - starting REFRESH from i-d2e29fa2 for map search, map-size 62373 
01:02:12.003 [Incoming-1,mprewCache,i-f6a9d986] DEBUG c.m.e.q.c.l.DistributedMapManager - i-f6a9d986: to i-d2e29fa2: search:PUT_MANY, 50 keyValues 
# transmits a block of 50 values to the remote but this never seems to get there 
01:02:12.004 [Incoming-1,mprewCache,i-f6a9d986] TRACE o.j.p.UNICAST - i-f6a9d986 --> DATA(i-d2e29fa2: #11, conn_id=10) 
# …
Run Code Online (Sandbox Code Playgroud)

java udp jgroups amazon-ec2 infinispan

5
推荐指数
1
解决办法
666
查看次数

如何集成EhCache 2.9和JGroups复制?

http://ehcache.org/generated/2.9.0/html/ehc-all/#page/Ehcache_Documentation_Set%2Fco-use_supported_types.html%23wwconnect_header

来自ehcache 2.9的这篇文档说它将支持RMI,JGroups和JMS.但是,很明显,ehcache-2.9 JAR中的API已经更改,文档也不是最新的.在我得到下面的错误后,仔细看看它的EhCache ClassLoaderUtils确认这个方法(getStandardClassLoader())确实不存在.

我正在寻找关于如何解决这个问题的好主意,所以我可以在ehcache 2.9中使用JGroups复制.

我正在使用最新的ehcache-jgroupsreplication maven依赖:

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-jgroupsreplication</artifactId>
    <version>1.7</version>
</dependency>



Caused by: net.sf.ehcache.CacheException: java.lang.NoSuchMethodError: net.sf.ehcache.util.ClassLoaderUtil.getStandardClassLoader()Ljava/lang/ClassLoader;
at net.sf.ehcache.CacheManager.init(CacheManager.java:426)
at net.sf.ehcache.CacheManager.<init>(CacheManager.java:270)
at org.springframework.cache.ehcache.EhCacheManagerFactoryBean.afterPropertiesSet(EhCacheManagerFactoryBean.java:157)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)
... 39 more
Caused by: java.lang.NoSuchMethodError: net.sf.ehcache.util.ClassLoaderUtil.getStandardClassLoader()Ljava/lang/ClassLoader;
at net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory.createCachePeerProvider(JGroupsCacheManagerPeerProviderFactory.java:61)
at net.sf.ehcache.config.ConfigurationHelper.createCachePeerProviders(ConfigurationHelper.java:136)
at net.sf.ehcache.CacheManager.configure(CacheManager.java:795)
at net.sf.ehcache.CacheManager.doInit(CacheManager.java:471)
at net.sf.ehcache.CacheManager.init(CacheManager.java:395)
... 43 more
Run Code Online (Sandbox Code Playgroud)

jgroups ehcache

5
推荐指数
1
解决办法
1665
查看次数

infinispan 中的 ISPN000313 错误

我是Infinispan的新手,我正在使用Infinispan 8.1。我只是想获得有关此ISPN000313错误代码的一些知识。我已经对此错误代码进行了大量研究,但没有任何帮助我理解它。

我还想知道这个错误什么时候会发生,为什么会发生以及如何解决这个错误。

java jgroups infinispan wildfly infinispan-8

5
推荐指数
1
解决办法
839
查看次数

RMI有多快?

我已经看到了这样一个问题:两个独立的Java桌面应用程序之间的通信(答案:JGroups),我正在考虑用JavaGroups或直接RMI实现某些东西,但速度至关重要.我不会发送大量数据(MIDI消息的内容,每个3个字节,不过每三毫秒说两个消息),这将全部在同一台机器上.认为同一台物理机上的RMI/JGroups会慢吗?

(我的想法是我承受不起超过1毫秒的延迟,因为我已经有了一些,但我不确定如何在这种情况下最好地谈论速度.)

我想我真正的问题是:Java中的interspp通信是否有任何选项可以通过比TCP/IP更快的速度?我的意思是已经用Java实现的东西,而不是我需要实现的JNI可能性:)

我知道,不要尽早优化所有这些,但也比抱歉更安全.

java performance jgroups rmi

4
推荐指数
1
解决办法
6440
查看次数

为 JGroups 配置地址和端口

使用 JGroups 时,通过 Infinispan 等组件,可以配置 JGroups 将使用的端口和地址。

http://www.jgroups.org/manual/html/user-advanced.html
Run Code Online (Sandbox Code Playgroud)

例如:

<UDP
        mcast_addr="${jgroups.udp.mcast_addr:228.6.7.8}"
        mcast_port="${jgroups.udp.mcast_port:46655}"
        ...
Run Code Online (Sandbox Code Playgroud)

但这是让我困惑的地方。集群的所有成员如何都使用相同的端口 addr?

我原以为每个成员都有自己的端口,并且必须知道它需要与之交谈的其他成员的端口(和地址)?

谢谢

jgroups infinispan

3
推荐指数
1
解决办法
869
查看次数

使用 Infinispan Cache 和 computeIfAbsent 进行无效的 lambda 反序列化

我正在一个基本的 infinispan 集群,但遇到了一个令人费解的错误。

我基本上是在实现一个共享地图,只持有一个整数

这是我的服务代码

package sandbox.infinispan.test.service;

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.inject.Named;

import org.infinispan.Cache;

@Named("useThisOne")
@ApplicationScoped
public class CounterService implements ICounterService {

    private static final String KEY = "key";

    @Inject
    private Cache<String, Integer> cache;

    @Override
    public void inc(final int amount) {
        this.cache.put(KEY, Integer.valueOf(this.get() + amount));
    }

    @Override
    public int get() {
        return this.cache.computeIfAbsent(KEY, k -> Integer.valueOf(0)).intValue();
    }
}
Run Code Online (Sandbox Code Playgroud)

缓存由以下内容生成:

package sandbox.infinispan.test.config;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Produces;

import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import …
Run Code Online (Sandbox Code Playgroud)

jgroups infinispan wildfly

2
推荐指数
1
解决办法
442
查看次数