使用Redis作为缓存后,Ejabberd崩溃了

时间:2014-12-12 02:23:13

标签: redis erlang ejabberd

我正在构建一个基于Ejabberd的推送系统,但在MYSQL上存在性能问题(4个节点作为集群,40万用户在线)。

我尝试将Redis添加为离线消息/广播消息的cahce系统。一切顺利,除非广播开始。

这似乎是一个网络问题,因为我发现了以下错误:

  1. Mnesia重载:{mnesia_tm,message_queue_len,[24017,34957]}

  2. mnesia_event获得{inconsistent_database,running_partitioned_network

  3. 意外的信息:{mnesia_tm,'ejabberd2 @ push204.com',{dirty_res,ok}}

  4. 来自mysql的大量超时(我们仍然使用mysql来存储用户信息)

  5. 模拟器从< 0.18659.61>替换的丢弃消息。至< 0.15551.115>在该节点(2)的旧化身(1)

  6. 更糟糕的是,4个ejabberd节点中有一个没有响应并崩溃。

  7. 广播策略是向在线用户发送消息,然后将离线用户列表缓存到redis。 峰值消息可以达到每5分钟500k(我们统计5分钟内的数字) Redis中的数据大约为5GB。用户总数约为700万。 Redis客户端是eredis-pool(我想这个问题可能是由redis客户端造成的)

    有没有人可以就故障排除提出一些建议?

0 个答案:

没有答案