Compare commits
2 Commits
main
...
feat/check
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33779e68a1 | ||
|
|
f223d6d4ac |
@ -1,10 +1,10 @@
|
||||
FROM hazelcast/hazelcast:3.12.10
|
||||
FROM hazelcast/hazelcast:3.8.3
|
||||
|
||||
# Копируем файлы конфигурации в контейнер
|
||||
COPY ./hazelcast.xml /opt/hazelcast/
|
||||
COPY ./jmx_agent_config.yaml /opt/prometheus/
|
||||
|
||||
ENV JAVA_OPTS="-Dhazelcast.config=/opt/hazelcast/hazelcast.xml -Dhazelcast.jmx=true -Djava.rmi.server.hostname=onaintdata1"
|
||||
ENV JAVA_OPTS="-Dhazelcast.config=/opt/hazelcast/hazelcast.xml -Dhazelcast.jmx=true -Djava.rmi.server.hostname=127.0.0.1"
|
||||
ENV PROMETHEUS_PORT=9100
|
||||
ENV PROMETHEUS_CONFIG="/opt/prometheus/jmx_agent_config.yaml"
|
||||
ENV MIN_HEAP_SIZE=1228m
|
||||
|
||||
@ -1,17 +1,15 @@
|
||||
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.12.xsd"
|
||||
xmlns="http://www.hazelcast.com/schema/config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<hazelcast xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hazelcast.com/schema/config http://www.hazelcast.com/schema/config/hazelcast-config-3.8.xsd" xmlns="http://www.hazelcast.com/schema/config">
|
||||
<group>
|
||||
<name>superadmin</name>
|
||||
<password>dev-pass</password>
|
||||
</group>
|
||||
<network>
|
||||
<public-address>onaintdata1</public-address>
|
||||
<public-address>127.0.0.1</public-address>
|
||||
<port auto-increment="false">5701</port>
|
||||
<join>
|
||||
<multicast enabled="false"></multicast>
|
||||
<tcp-ip enabled="true">
|
||||
<member>onaintdata1:5701</member>
|
||||
<member>127.0.0.1:5701</member>
|
||||
</tcp-ip>
|
||||
</join>
|
||||
</network>
|
||||
|
||||
11
js/README.md
Normal file
11
js/README.md
Normal file
@ -0,0 +1,11 @@
|
||||
Попробовал проверить гипотезу утечки памяти в самой библиотеке при потере коннекта в базе.
|
||||
|
||||
Схема - каждые 30 ms делаем запрос к БД, далее гасим инстанс базы и смотрим что будет по памяти (Mb)
|
||||
|
||||
Результат и сразу после отключения и после полной потери коннекта в течении 3 минут (~6000 циклов):
|
||||
|
||||
```
|
||||
RSS/Heap Total/Heap Used - start 59/18/11 | current 59/16/13 | max 109/69/43
|
||||
```
|
||||
|
||||
кажется криминала нет и в самой либе нет проблем с утечкой памяти.
|
||||
71
js/index.js
71
js/index.js
@ -1,19 +1,70 @@
|
||||
const merge = require('lodash/merge');
|
||||
const Haz = require('hazelcast-client');
|
||||
|
||||
let globalClient = null;
|
||||
|
||||
const clientConfig = new Haz.Config.ClientConfig();
|
||||
const clientBaseConfig = new Haz.Config.ClientConfig();
|
||||
|
||||
// И вот это - единственный корректный способ установки значений в объект
|
||||
// конфигурации, который затем отдается в коннект и корректно работает
|
||||
// добро пожаловать в мир ява-разработчиков от IBM !
|
||||
clientConfig.groupConfig.name = 'superadmin';
|
||||
clientConfig.groupConfig.password = 'dev-pass';
|
||||
clientConfig.networkConfig.addresses.push('127.0.0.1:5701');
|
||||
clientConfig.properties['hazelcast.client.invocation.timeout.millis'] = 2000;
|
||||
// clientConfig.groupConfig.name = 'superadmin';
|
||||
// clientConfig.groupConfig.password = 'dev-pass';
|
||||
// clientConfig.networkConfig.addresses.push('127.0.0.1:5701');
|
||||
// clientConfig.properties['hazelcast.client.invocation.timeout.millis'] = 2000;
|
||||
|
||||
const cfg = {
|
||||
groupConfig: {
|
||||
name: 'superadmin',
|
||||
password: 'dev-pass',
|
||||
},
|
||||
networkConfig: {
|
||||
addresses: ['127.0.0.1:5701']
|
||||
},
|
||||
// properties: {
|
||||
// 'hazelcast.client.heartbeat.interval': 1000,
|
||||
// 'hazelcast.client.heartbeat.timeout': 10000,
|
||||
// 'hazelcast.client.invocation.timeout.millis': 2222,
|
||||
// }
|
||||
};
|
||||
|
||||
const clientConfig = merge(clientBaseConfig, cfg);
|
||||
|
||||
console.log(clientConfig);
|
||||
|
||||
const startMem = process.memoryUsage();
|
||||
|
||||
const us = {
|
||||
rss: (startMem.rss / 1024 / 1024) | 0,
|
||||
hTotal: (startMem.heapTotal / 1024 / 1024) | 0,
|
||||
hUsed: (startMem.heapUsed / 1024 / 1024) | 0
|
||||
}
|
||||
|
||||
const max = {
|
||||
rss: 0,
|
||||
hTotal: 0,
|
||||
hUsed: 0
|
||||
};
|
||||
|
||||
function memoryUsage() {
|
||||
const usage = process.memoryUsage();
|
||||
|
||||
const uc = {
|
||||
rss: (usage.rss / 1024 / 1024) | 0,
|
||||
hTotal: (usage.heapTotal / 1024 / 1024) | 0,
|
||||
hUsed: (usage.heapUsed / 1024 / 1024) | 0
|
||||
}
|
||||
|
||||
// save peak values
|
||||
if (uc.rss > max.rss) max.rss = uc.rss
|
||||
if (uc.hTotal > max.hTotal) max.hTotal = uc.hTotal
|
||||
if (uc.hUsed > max.hUsed) max.hUsed = uc.hUsed
|
||||
|
||||
const time = +Date.now();
|
||||
|
||||
process.stdout.write(`\r${time} RSS/Heap Total/Heap Used - start ${us.rss}/${us.hTotal}/${us.hUsed} | current ${uc.rss}/${uc.hTotal}/${uc.hUsed} | max ${max.rss}/${max.hTotal}/${max.hUsed}`);
|
||||
}
|
||||
|
||||
Haz.Client.newHazelcastClient(clientConfig).then((client) => {
|
||||
console.log('Success!');
|
||||
globalClient = client;
|
||||
@ -26,14 +77,16 @@ Haz.Client.newHazelcastClient(clientConfig).then((client) => {
|
||||
|
||||
setInterval(async () => {
|
||||
try {
|
||||
console.log('Client >>>>>>');
|
||||
// console.log('Client >>>>>>');
|
||||
memoryUsage();
|
||||
|
||||
if (globalClient) {
|
||||
const map = await globalClient.getMap('qqz');
|
||||
console.log('value: ', await map.put('q', Date.now()));
|
||||
const prev = await map.put('q', Date.now());
|
||||
// console.log('value: ', prev);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('>>>>>>>>>>>>>>>>>', e)
|
||||
// console.log('>>>>>>>>>>>>>>>>>', e)
|
||||
}
|
||||
}, 5000);
|
||||
}, 30);
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
"main": "index.js",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"hazelcast-client": "3.12.4"
|
||||
"hazelcast-client": "3.12.4",
|
||||
"lodash": "latest"
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,6 +16,11 @@ hazelcast-client@3.12.4:
|
||||
long "4.0.0"
|
||||
safe-buffer "5.2.1"
|
||||
|
||||
lodash@latest:
|
||||
version "4.17.21"
|
||||
resolved "http://binary.moscow.alfaintra.net/artifactory/api/npm/npm/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
long@4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "http://binary.moscow.alfaintra.net/artifactory/api/npm/npm/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user