分类: LINUX
2014-06-13 16:29:19
Hi
昨天一个PD提到偶尔会有memcached无法建立连接的case,根据这个情况做了一些功课,发现我们线上memcached 的参数需要调整:
l 线程数:由默认的4个线程调至8个
l max simultaneous connections 调整至10000
另外有一个问题:我们线上的client和memcached 之间是否都是长连接?
目前存在这个风险的instance主要有:(连接数超过500的)
982 192.168.49.32:11218
975 192.168.49.31:11218
856 192.168.79.89:11220
833 10.8.8.31:11236
829 192.169.7.188:11220
分析和debug过程如下:
1、确认问题的存在
在24小时中每隔一秒对memcached instance发起get请求,有646次处理时间超过100ms,其中甚至有超过200s的请求
2、观察instance 的情况
观察发现,前端client和memcached instance建立的是长连接,连接数基本稳定在900+,也就是说如果有新的请求数超过10个,超时的可能性很大
而我们线上跑的memcached instance 最大连接数是1024,并且经过在测试服务器测试,在最大连接数设置为20的情况下,实际可用连接是4,也就是说当最大连接数是1024的情况下,实际可建立连接数是1008
3、测试验证
而在连接数不足的情况下,会发生处理时间大大增加的情况,for example:
在测试机器并发测试: