ahww520 / xmemcached

Automatically exported from code.google.com/p/xmemcached
Apache License 2.0
0 stars 0 forks source link

hibernate-memcached 兼容timeout问题 #172

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
在XmemcachedClientFactory类中,xmemcached的client端默认ConnectionPoolSiz
e的大小使用的是1,并没有提供设置ConnectionPoolSize大小的配置
,能不能增加一个ConnectionPoolSize大小设置的配置,这样的话��
�不易出现timeout的问题了。
我系统这边自己做了源代码的修改:
<prop key="hibernate.memcached.connectionPoolSize">20</prop>

    public static final String PROP_CONNECTION_POOL_SIZE = Config.PROP_PREFIX
            + "connectionPoolSize";

builder.setConnectionPoolSize(getConnectionPoolSize());

    private int getConnectionPoolSize() {
        return this.properties.getInt(PROP_CONNECTION_POOL_SIZE,
                MemcachedClient.DEFAULT_CONNECTION_POOL_SIZE);
    }

请确认一下

Original issue reported on code.google.com by Boli.Ji...@gmail.com on 28 Dec 2011 at 7:49

GoogleCodeExporter commented 8 years ago
嗯,这会添加一下,谢谢

Original comment by killme2...@gmail.com on 28 Dec 2011 at 7:51

GoogleCodeExporter commented 8 years ago
你的修改是没有问题的,我已经合并进取了,非常感谢。1.3.6
即将发布。

Original comment by killme2...@gmail.com on 13 Jan 2012 at 2:11

GoogleCodeExporter commented 8 years ago
在如下场景下:
hibernate.memcached.connectionPoolSize设置为20,optimeout设置为5000;
xmemcached.connectionPoolSize设置为30,optimeout设置为5000;
hibernate缓存和xmemcached缓存分别对应不同的memcached服务器(各2
台),依然会出现timeout的错误,还有什么地方可以优化设置�
��让timeout出现的次数更低呢

Original comment by shai...@winxuan.com on 13 Jan 2012 at 8:46

GoogleCodeExporter commented 8 years ago
晕翻,开始用了公司的另外一个人的邮箱了。。。。
在如下场景下:
hibernate.memcached.connectionPoolSize设置为20,optimeout设置为5000;
xmemcached.connectionPoolSize设置为30,optimeout设置为5000;
hibernate缓存和xmemcached缓存分别对应不同的memcached服务器(各2
台),依然会出现timeout的错误,还有什么地方可以优化设置�
��让timeout出现的次数更低呢

Original comment by Boli.Ji...@gmail.com on 13 Jan 2012 at 8:50

GoogleCodeExporter commented 8 years ago
最主要的是我们的访问量并不大,按道理来说不应该出现timeo
ut的情况才对啊,烦请解释一下

Original comment by Boli.Ji...@gmail.com on 13 Jan 2012 at 8:52

GoogleCodeExporter commented 8 years ago
timeout跟访问量没有太大关系,跟数据大小很有关系,可以统�
��下你们的数据大小。

Original comment by killme2...@gmail.com on 13 Jan 2012 at 9:27

GoogleCodeExporter commented 8 years ago
统计了一下,数据大小主要分布在1k以内,网络层的TCP选项使
用的是默认配置,timeout的原因还有有什么别的影响因素嘛?

Original comment by Boli.Ji...@gmail.com on 16 Jan 2012 at 5:03

GoogleCodeExporter commented 8 years ago
读写比例不高?  
用的是text协议还是binary?如果并发不大,我不建议设置连接池
。如果没有特别需求,也不建议用binary协议。

Original comment by killme2...@gmail.com on 16 Jan 2012 at 5:36

GoogleCodeExporter commented 8 years ago
用的是text,您的意思是不是说:timeout的原因是启用了nagle和�
��接池,但是并发不大,以至于发生了大部分跟memcached的交互
都是在等待时间超了之后才进行的?

nagle算法适用于一个连接池还是针对所有的连接池的呢?

Original comment by Boli.Ji...@gmail.com on 16 Jan 2012 at 5:59

GoogleCodeExporter commented 8 years ago
并发确实不大

Original comment by Boli.Ji...@gmail.com on 16 Jan 2012 at 6:02

GoogleCodeExporter commented 8 years ago
不是,我不敢下结论,因为我不知道你们系统的情况。是从��
�自己的经验来推断的。

你用的是1.3.5?  
1.3.5又启用了nagle算法,在低并发的时候确实会让响应性受到�
��响。使用连接池,因为多了个管理和选择连接池的开销,如
果并发不大,这个开销抵过了链接池带来的好处。

我建议你将链接池设置为1,然后关闭nagle算法,并调小合并因�
��看看,合并因子是指这个
 memcachedClient.setMergeFactor(50);

Original comment by killme2...@gmail.com on 16 Jan 2012 at 6:16

GoogleCodeExporter commented 8 years ago
恩,好的。谢谢
用的是1.3.5
合并因子有什么用呢?

Original comment by Boli.Ji...@gmail.com on 16 Jan 2012 at 6:20

GoogleCodeExporter commented 8 years ago
看这个

http://www.blogjava.net/killme2008/archive/2010/07/08/325564.html

Original comment by killme2...@gmail.com on 16 Jan 2012 at 6:23

GoogleCodeExporter commented 8 years ago
经测试(测试样本:10个线程每个线程访问100次,本机测试)
:(timeout时间设置为3秒)
1、不管启用不启用nagle算法,当连接池数>1,都会产生timeout��
�异常,随着连接池的增加,timeout出现的频率会增加。(memcac
hed服务器端的处理连接数使用的默认1024个,应该不会出现响�
��不过来的情况,问题出在哪儿呢?)
2、不启用nagle算法,MergeFactor设置为50,连接池设置为1,不会
出现timeout的异常,响应时间也很稳定。(MergeFactor值设置太��
�太小都不合适,平均响应时间都较大)
3、不启用nagle算法,MergeFactor设置为50,连接池设置为1,当线
程数增加到20,会出现timeout的情况
4、启用nagle算法,MergeFactor设置为50,连接池设置为1,不会出
现timeout的异常,响应时间也很稳定。但相较不启用nagle算法��
�均响应时间要大一些。
5、启用nagle算法,MergeFactor设置为50,连接池设置为1,当线程
数增加到20,会出现timeout的情况

Original comment by Boli.Ji...@gmail.com on 16 Jan 2012 at 9:41

GoogleCodeExporter commented 8 years ago
感谢你的测试,按照你的测试结果调整了默认参数,明天发��
�1.3.6

Original comment by killme2...@gmail.com on 18 Mar 2012 at 10:07

GoogleCodeExporter commented 8 years ago
好的,期待中。。。。

Original comment by Boli.Ji...@gmail.com on 18 Mar 2012 at 10:29

GoogleCodeExporter commented 8 years ago
xmemcached 1.3.6 released.

Original comment by killme2...@gmail.com on 19 Mar 2012 at 2:13