Hello community experts!
I setup cluster with 6 nodes, memory on each node is 128GB.
Aerospike version: 4.8.0.5, client: 4.4.9
File config:
# This stanza must come first.
service {
user root
group root
paxos-single-replica-limit 1
proto-fd-max 20000
log-local-time true
}
logging {
# Log file must be an absolute path.
file /data/log/aerospike-server/port3000.log {
context any info
}
}
network {
service {
address any
port 3000
}
heartbeat {
address vlanxxx
mode mesh
port 3002
mesh-seed-address-port 192.168.1.10 3002
mesh-seed-address-port 192.168.1.11 3002
mesh-seed-address-port 192.168.1.12 3002
mesh-seed-address-port 192.168.1.13 3002
mesh-seed-address-port 192.168.1.14 3002
mesh-seed-address-port 192.168.1.15 3002
interval 150
timeout 10
}
fabric {
address vlanxxx
port 3001
}
info {
port 3003
}
}
namespace mem_storage {
replication-factor 2
memory-size 12G
default-ttl 30 # 30 days, use 0 to never expire/evict.
storage-engine memory
}
Phenomenon: I used the map type to perform read / write to the aer, after a period of time, the bandwidth network phenomenon in the cluster is uneven: node 192.168.1.10: bw out ~990 Mbit/s, bw in on node 192.168.1.15 ~ 900 Mbit/s and other nodes bw in / out ~ 20 Mbit/s.
Log on node 192.168.1.10:
GMT: WARNING (fabric): (fabric.c:2031) fabric_connection_process_readable(0x7fa20fe0d088) invalid msg_size 135901932 remote 0x1771b2128ce94202
Mem used service aerospike ~ 2gb but the memory on node 192.168.1.10 increased continuously causing OOM, I restarted the service aerospike on node 192.168.1.10 → memory stable, but then the migrate partition between node 192.168.1.10 and 192.168.1.15 failed.
Log on node 192.168.1.15:
WARNING (migrate): (migrate.c: 1019) missing acks from node 1771b2128ce94202.
I force to restart service on node 192.168.1.15 resulting in partial loss of data.
Java code client:
public int saveItemsToMap(List<UserActivityGroup> activityGroups, Long user_id) {
try {
MapPolicy mapPolicy = new MapPolicy(MapOrder.UNORDERED, MapWriteFlags.DEFAULT);
Key key = new Key(namespace, set_name, user_id);
Map<Value, Value> map = new HashMap<>();
for (UserActivityGroup activityGroup : activityGroups) {
map.put(
Value.get(createMapKey(activityGroup)),
Value.get(createMapValue(activityGroup))
);
}
// client.operate(eventLoops.next(), null, writePolicy, key,
// MapOperation.putItems(mapPolicy, bin_name, map)
// );
Record record = client.operate(writePolicy, key, MapOperation.putItems(mapPolicy, bin_name, map));
return record.getInt(bin_name);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return 0;
}
Thank you very much !