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 ./hazelcast.xml /opt/hazelcast/
|
||||||
COPY ./jmx_agent_config.yaml /opt/prometheus/
|
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_PORT=9100
|
||||||
ENV PROMETHEUS_CONFIG="/opt/prometheus/jmx_agent_config.yaml"
|
ENV PROMETHEUS_CONFIG="/opt/prometheus/jmx_agent_config.yaml"
|
||||||
ENV MIN_HEAP_SIZE=1228m
|
ENV MIN_HEAP_SIZE=1228m
|
||||||
|
|||||||
@ -1,17 +1,15 @@
|
|||||||
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.12.xsd"
|
<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">
|
||||||
xmlns="http://www.hazelcast.com/schema/config"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<group>
|
<group>
|
||||||
<name>superadmin</name>
|
<name>superadmin</name>
|
||||||
<password>dev-pass</password>
|
<password>dev-pass</password>
|
||||||
</group>
|
</group>
|
||||||
<network>
|
<network>
|
||||||
<public-address>onaintdata1</public-address>
|
<public-address>127.0.0.1</public-address>
|
||||||
<port auto-increment="false">5701</port>
|
<port auto-increment="false">5701</port>
|
||||||
<join>
|
<join>
|
||||||
<multicast enabled="false"></multicast>
|
<multicast enabled="false"></multicast>
|
||||||
<tcp-ip enabled="true">
|
<tcp-ip enabled="true">
|
||||||
<member>onaintdata1:5701</member>
|
<member>127.0.0.1:5701</member>
|
||||||
</tcp-ip>
|
</tcp-ip>
|
||||||
</join>
|
</join>
|
||||||
</network>
|
</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');
|
const Haz = require('hazelcast-client');
|
||||||
|
|
||||||
let globalClient = null;
|
let globalClient = null;
|
||||||
|
|
||||||
const clientConfig = new Haz.Config.ClientConfig();
|
const clientBaseConfig = new Haz.Config.ClientConfig();
|
||||||
|
|
||||||
// И вот это - единственный корректный способ установки значений в объект
|
// И вот это - единственный корректный способ установки значений в объект
|
||||||
// конфигурации, который затем отдается в коннект и корректно работает
|
// конфигурации, который затем отдается в коннект и корректно работает
|
||||||
// добро пожаловать в мир ява-разработчиков от IBM !
|
// добро пожаловать в мир ява-разработчиков от IBM !
|
||||||
clientConfig.groupConfig.name = 'superadmin';
|
// clientConfig.groupConfig.name = 'superadmin';
|
||||||
clientConfig.groupConfig.password = 'dev-pass';
|
// clientConfig.groupConfig.password = 'dev-pass';
|
||||||
clientConfig.networkConfig.addresses.push('127.0.0.1:5701');
|
// clientConfig.networkConfig.addresses.push('127.0.0.1:5701');
|
||||||
clientConfig.properties['hazelcast.client.invocation.timeout.millis'] = 2000;
|
// 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);
|
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) => {
|
Haz.Client.newHazelcastClient(clientConfig).then((client) => {
|
||||||
console.log('Success!');
|
console.log('Success!');
|
||||||
globalClient = client;
|
globalClient = client;
|
||||||
@ -26,14 +77,16 @@ Haz.Client.newHazelcastClient(clientConfig).then((client) => {
|
|||||||
|
|
||||||
setInterval(async () => {
|
setInterval(async () => {
|
||||||
try {
|
try {
|
||||||
console.log('Client >>>>>>');
|
// console.log('Client >>>>>>');
|
||||||
|
memoryUsage();
|
||||||
|
|
||||||
if (globalClient) {
|
if (globalClient) {
|
||||||
const map = await globalClient.getMap('qqz');
|
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) {
|
} catch (e) {
|
||||||
console.log('>>>>>>>>>>>>>>>>>', e)
|
// console.log('>>>>>>>>>>>>>>>>>', e)
|
||||||
}
|
}
|
||||||
}, 5000);
|
}, 30);
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"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"
|
long "4.0.0"
|
||||||
safe-buffer "5.2.1"
|
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:
|
long@4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "http://binary.moscow.alfaintra.net/artifactory/api/npm/npm/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
|
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