2017-01-28 10 views
1

Я использую Data Grid от Ignite и хотел протестировать многоуровневый режим. У меня есть 1 сервер и 1 клиент как часть сетки на разных машинах. Ниже приведены шаги, которые я выполняю для создания кеша:Ignite Off heap Tiered не работает

  1. Запустите сервер на одном узле.
  2. Запустите клиент на другом узле (используйте Discovery spi для подключения к серверу) и создайте кэш вместе с кешем и загрузите 10 000 записей в кеш.
  3. Режим кэширования памяти - OFFHEAP_TIERED, а память выключенной памяти установлена ​​в ноль, используя метод CacheConfiguration # setOffHeapMaxMemory (int size).
  4. Откройте 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 хранятся с кучи.

Также, если я создаю и загружаю кэш с сервера и запускаю клиент (он ничего не делает), то все записи хранятся с кучи.

Для этого есть другое поведение, которое может вызвать больше света.

  1. Опубликовать шаги, предусмотренные выше, если запустить другой узел сервера, новый узел сервер хранит записи кэша в выходной памяти кучи (предполагается, что резервная копия установлена).

  2. При повторном запуске клиента, чтобы очистить существующий кэш и снова добавить данных на серверах, часть данных в куче, а часть на офф кучи.

+0

Не могли бы вы указать версию Ignite? – kuaw26

+0

Версия Ignite 1.7.0 –

ответ

2

Я исследовал и воспламенил woks таким образом, как вы видите.

Вы можете отслеживать этот вопрос для исправления https://issues.apache.org/jira/browse/IGNITE-4662

Или не использовать вблизи кэша

+0

Спасибо @ Vesisko. –