2017-10-23 1 views
0

Ich versuche, einen sehr großen Wert mit Apache Geode zu replizieren. Was ich im Grunde mache, ist die setbit-Funktion von redis. Während ich den Offset für die Setbit-Funktion weiter erhöhe, stürzt der Geode-Server ab. Ich verwende den Redis-Adapter von Geode als Client.Nicht in der Lage, große Werte mit Apache Geode Wan Replikation zu replizieren

import redis.clients.jedis.*; 
import redis.clients.jedis.exceptions.JedisException; 

import java.util.HashMap; 
import java.util.Map; 
import java.util.Set; 
import redis.clients.jedis.exceptions.JedisException; 

public class Test { 

    //address of your redis server 
    private static final String redisHost = "10.0.0.10"; 
    private static final Integer redisPort = 11211; 

    //remember to increase sensder queue size 
    public void addSets() { 
     JedisPoolConfig poolConfig = new JedisPoolConfig(); 
     poolConfig.setMaxIdle(50); 
     poolConfig.setMaxTotal(1000); 
     poolConfig.setTestOnBorrow(true); 
     poolConfig.setTestOnReturn(true); 
     JedisPool pool = new JedisPool(poolConfig,redisHost, redisPort,10000000); 
     Jedis jedis= null; 
     String key = "shivd"; 
     long [] bits = {1464236631,12373513,1488983657,1329373495,147236649,1623846793,1194510359,282099785,1758709929,1059647223,416962921,1893573065,924784087,551826057,2028436201}; 

     //get a jedis connection jedis connection pool 
     try { 
      jedis = pool.getResource(); 
      Pipeline pipeline = jedis.pipelined(); 

      for (long b : bits) { 

       pipeline.setbit(key, b, true); 
      } 
      pipeline.multi(); 
      pipeline.exec(); 

     } finally { 
      if (jedis != null) { 
       jedis.close(); 
      } 
     } 
     pool.destroy(); 

    } 
    public static void main(String[] args){ 
     Test main = new Test(); 
     main.addSets(); 
     //main.cal(); 
     //main.addHash(); 
    } 
} 

Wenn ich den Offset auf ein Limit verringern, funktioniert es. Hier ist das Protokoll der beiden Cache-Server mit redis Adapter:

dc1.log (10.0.0.10) -, wo ich bin dem Schlüssel

dc1.log

dc2.log (wo die Replikation geschieht)

dc2.log

Antwort

0

Ihr Geode-Server aus dem Speicher ausgeführt wird. Der letzte Wert in Ihrem ist 2028436201, der ungefähr 253MB benötigen würde, um in Speicher zu speichern.

Sie können mehr Speicher für den Geode-Server geben, mit so etwas wie:

gfsh>start server --name=serv1 --max-heap=2G 

Wenn Ihre Offsets sind so groß, Sie können auch versuchen, Ihre bitset auf dem niedrigsten Offset zu stützen. (d. h. subtrahiere den niedrigsten Offset von jedem Offset vor dem Speichern und dann halte den niedrigsten Offset extern).

Verwandte Themen