2017-10-23 17 views
0

Apacheのジオードを使用して非常に大きな値を複製しようとしています。私が基本的にやっているのは、赤目のsetbit関数を使うことです。 setbit関数のオフセットを増やし続けると、ジオードサーバーがクラッシュします。私はクライアントとしてgeodeのredisアダプタを使用しています。Apacheのジオメトリー複製で大きな値を複製できません

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(); 
    } 
} 

オフセットをある程度制限すると、それが機能します。ここ はRedisのアダプタを使用してキャッシュサーバの両方のログです:

dc1.log(10.0.0.10) - 私は(複製が起こる)キー

dc1.log

dc2.logを挿入しています

dc2.log

答えて

0

あなたのGeodeサーバは、メモリが不足しています。あなたの最後の値は2028436201で、メモリに格納するには約253MBが必要です。あなたのオフセットが大きい、あなたはまた、最も低いオフセットであなたのビットセットをベースにしようとすることができるということであれば

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

次のようなものとのGeodeサーバーに多くのメモリを与えることができます。 (すなわち、格納する前に各オフセットから最低のオフセットを減算し、次に最小のオフセットを外部に維持する)。

関連する問題