rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » Java综合

xmemcached使用之性能优化

XMemcached对操作主要的优化手段:

(1)get的优化

连续的get操作将被合并成一个get操作提交,最多合并mergeFactor个命令,这个参数可以通过

XMemcachedClient.setMergeFactor(int); default is 150

方法设置,默认是150,不推荐设置过大的数值。get优化默认是开启的,可以通过

XMemcachedClient.setOptimizeMergetGet(false); //default is true,recommend true

关闭。

(2)ByteBuffer合并

xmemcached会将连续的操作形成的ByteBuffer合并成一个大的ByteBuffer,大小接近socket的发送缓冲区大小,以最大限度地提升发送效率,这个优化默认也是开启的,可以通过

XMemcachedClient.setOptimizeMergeBuffer(false);//default is true,recommend true

关闭。不推荐关闭,除非你的应用缓存的数据特别大。

(3)网络层的优化

默认采用阻塞读,在局域网内能带来更好的效率,可以设置网络参数,linux系统在多节点memcached下,强烈建议将读线程数设置大于0,接近或者等于memcached节点数(具体参数看你的测试结果);在windows系统,推荐采用默认设置(也就是单线程):

MemcachedClientBuilder builder = new XMemcachedClientBuilder(

AddrUtil.getAddresses("localhost:12000"));

builder.setBufferAllocator(new CachedBufferAllocator());

//采用CachedBufferAllocator    

builder.getConfiguration().setReadThreadCount(2); // 设置读线程数    

MemcachedClient client=builder.build();

     如上面代码所示,你可以采用CachedBufferAllocator作为ByteBuffer的分配器,这个分配器将在ThreadLocal中缓存创建的ByteBuffer重复利用,使用此分配器经测试没有带来显著的性能提升,慎用。

更多网络优化参数,可以通过

XMemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("localhost:12000"));   

builder.getConfiguration().setHandleReadWriteConcurrently(true);   

builder.getConfiguration().setReuseAddress(true);   

builder.getConfiguration().setTcpNoDelay(true);   

builder.getConfiguration().setTcpRecvBufferSize(8*1024);

MemcachedClient client=builder.build();

注:计划将xmemcached用于其和中。

顶一下
(1)
踩一下
(0)