memcached Timed out(x milliseconds) waiting for operation while connecte的排查过程

       系统使用了memcached,客户端使用了xmemcached2.0,最近系统执行MemcachedClient的get方法时一直报错误“memcached Timed out(x milliseconds) waiting for operation while connecte”,其中标红的x是设置的超时时间。由于本人对memcached的知识也比较缺乏,所以首次排查也遇到不少问题,这里简单说下步骤以供其他和我一样的小白摸索。

        首先就根据其他网友的资料,怀疑是服务端连接数量超过了,可是查资料说默认memcached的最大连接数是1024个。我们客户端端的“connectionPoolSize”配置是300,远比这个数量小啊。那么服务端的数量到底是多少?怎么查看?经过查找资料,可以使用telnet的方式查看,如果你的机子上telnet命令没有开启需要打开下。

         第一步:在cmd中启动telnet客户端,命令类似于:telnet localhost 11211,你可以把localhost换成你自己机子的IP。这个时候就会弹出一个黑色的界面,上边啥也没有。

         第二步:不要着急,你输入命令“stats",如果经过了一分钟时间这个界面还是没有反应的话,就说明memcached的服务端连接数已经超过其负载能力了。这个时候你需要把客户端的connectionPoolSize连接数设置的更小些。切记,最好重启memcached服务端,否则常常还是连不上。然后再重复以上说的第一步的和第二步的步骤,直到connectionPoolSize设置的足够小,服务端可以连上了。这个时候connectionPoolSize就是你当前memcached可以承载的连接数。

        第三步:连接上后就可以查看当前的连接数,比如我这里是:STAT curr_connections 51。

        以上就是解决查看服务端连接的问题时,顺带验证了自己的推测,问题找到了再想办法解决提高连接数的问题,这是后话。

        这里暂时留下问题:网上资料说memcached服务端的默认最大连接数是1024个,可是为啥我这里到50个就再也连不上了,太晚了随后再搞清楚这个问题。

        

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。