Я использую Data Grid от Ignite и хотел протестировать многоуровневый режим. У меня есть 1 сервер и 1 клиент как часть сетки на разных машинах. Ниже приведены шаги, которые я выполняю для создания кеша:Ignite Off heap Tiered не работает
- Запустите сервер на одном узле.
- Запустите клиент на другом узле (используйте Discovery spi для подключения к серверу) и создайте кэш вместе с кешем и загрузите 10 000 записей в кеш.
- Режим кэширования памяти - OFFHEAP_TIERED, а память выключенной памяти установлена в ноль, используя метод CacheConfiguration # setOffHeapMaxMemory (int size).
- Откройте Ignite CLI (козырек) и проверьте количество записей, сохраненных с кучи, и сохраненных в куче.
Странная вещь, с которой я сталкиваюсь, заключается в том, что даже одна запись не хранится с кучи. Козырек показывает все записи в клиенте и на сервере, хранящемся в куче. Но, если я не использую ближний кэш, все записи хранятся в куче.
Я хочу знать, является ли эта проблема статистикой, отображаемой козырьком, или есть изменение в поведении записей Ignite, когда включен почти кеш.
Это мой стороне клиента Код
public class IgniteClient {
public static void main(String[] args) {
TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();
// IP has not been shown intentionally
ipFinder.setAddresses(Arrays.asList("*.*.*.*"));
TcpDiscoverySpi spi = new TcpDiscoverySpi();
spi.setIpFinder(ipFinder);
IgniteConfiguration icfg = new IgniteConfiguration();
icfg.setMetricsUpdateFrequency(-1);
icfg.setClientMode(true);
Ignite grid = Ignition.start(icfg);
CacheConfiguration<Integer, String> ccfg = new CacheConfiguration<Integer, String>();
NearCacheConfiguration<Integer, String> ncfg = new NearCacheConfiguration<>();
ccfg.setMemoryMode(CacheMemoryMode.OFFHEAP_TIERED);
ccfg.setOffHeapMaxMemory(0);
ccfg.setName("data");
ncfg.setNearStartSize(1000);
IgniteCache<Integer, String> dataCache = grid.getOrCreateCache(ccfg, ncfg);
for (int i = 1; i <= 10000; i++) {
dataCache.put(i, Integer.toString(i));
}
System.out.println("The entries in data cache are " + dataCache.size(CachePeekMode.ALL));
}
}
Это мой Server Side Code
public class IgniteMain {
public static void main(String[] args) {
IgniteConfiguration icfg = new IgniteConfiguration();
icfg.setMetricsUpdateFrequency(-1);
Ignite grid = Ignition.start(icfg);
}
}
Это выход из командной «кэш» на козырьке Ignite, который работает на стороне клиента машина
Time of the snapshot: 01/28/17, 18:23:41
+===================================================================================================================+
| Name(@) | Mode | Nodes | Entries (Heap/Off heap) | Hits | Misses | Reads | Writes |
+===================================================================================================================+
| data(@c0) | PARTITIONED | 2 | min: 10000 (10000/0) | min: 0 | min: 0 | min: 0 | min: 0 |
| | | | avg: 10000.00 (10000.00/0.00) | avg: 0.00 | avg: 0.00 | avg: 0.00 | avg: 0.00 |
| | | | max: 10000 (10000/0) | max: 0 | max: 0 | max: 0 | max: 0 |
+-------------------------------------------------------------------------------------------------------------------+
Как вы видите, козырек показывает, что все записи находятся в куче и ни одна из них em хранятся с кучи.
Также, если я создаю и загружаю кэш с сервера и запускаю клиент (он ничего не делает), то все записи хранятся с кучи.
Для этого есть другое поведение, которое может вызвать больше света.
Опубликовать шаги, предусмотренные выше, если запустить другой узел сервера, новый узел сервер хранит записи кэша в выходной памяти кучи (предполагается, что резервная копия установлена).
При повторном запуске клиента, чтобы очистить существующий кэш и снова добавить данных на серверах, часть данных в куче, а часть на офф кучи.
Не могли бы вы указать версию Ignite? – kuaw26
Версия Ignite 1.7.0 –