首先,我的EMQX目前是3.0.1版本(考虑过升级,但我是平台方的,设备方不太愿意升级,好像升级之后协议之类的要做兼容等大动干戈),基本上消息都是涉及人脸的,图片做了base64处理,在做了集群之后,发现不时出现OOM问题。
其实我是3台节点集群的,但是有一个节点已经因为OOM问题不可用了,然后这是在观测剩下两台的时候,发现内存暴增截的图。
内存暴增至最高的时候,已经达到120G了,我观察平台日志此时正在下发消息,消息仍然是携带base64图片的,当时大概有2个topic,每个topic有800条消息正在下发,并且这个下发操作每天大概会有30次左右。
请问,这些数据会被保存到内存中,造成OOM吗,下面是我的emqx连接配置(java):
private MqttAsyncClient createNewClient(String clientId) throws MqttException {
MqttAsyncClient client = new MqttAsyncClient(broker, clientId, null); //null不需要持久化
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(false);
options.setAutomaticReconnect(true);
options.setConnectionTimeout(5);
options.setKeepAliveInterval(100);
options.setMaxInflight(1000);
options.setUserName(Config.get(“websocket.emqx.userName”));
options.setPassword(Config.get(“websocket.emqx.password”).toCharArray());
client.connect(options).waitForCompletion();
return client;
}