由于数据量非常大,有些数据使用memcache来存储的,现在想把memcache放在单独的一台服务器上面,以后再考虑集成等问题。可是现在就出现问题了,memcache设置为连接本地时,取数据永远都是成功正常的,可是设置为远程连接另一台机器,多次连接中总有几次是获取不到任何值的。
这两台机器配置的memcache是一模一样的,我采用的是短连接方式,当改为长连接方式时错误率有些降低,不过还是有时候获取不到值,在线求助。

解决方案 »

  1.   

    我查看了错误日志,偶尔连接不上的原因是:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
    可是本地的时候永不出现这个问题,一旦远程连另一台机器就出现这个问题了,不过平均30次会出现一次,这样的频率太可怕了。是我哪里设置有问题,还是memcache的远程连接本身就有问题,memcache应该不至于这么不稳定啊我觉得,不然facebook也不会用的。
      

  2.   

    感觉就是丢包问题,也就是说网络的问题吧,,,,我也晓不得,你直接在一台机子上ping哈另外一台,看看丢包率多少
      

  3.   

    1000次得到1000次响应,lost=0%。我觉得不是丢包问题,因为这两台在一个局域网下面,而且网速绝对快、稳。
      

  4.   

    这种问题我觉得你可以试试两台机器都保存memcache,这台不行获取不到就用另一台,然后再进一步考虑你的继承。不过按现在来看,只有那么非常少的次数会获取不到值,那么两台会经常有一台没事情干,但是每次存值都要存一遍,效率容易慢一些。
    既然楼主测试了那么多次只有偶尔几次取不到值,那么可以用另一种办法,memcache->get不到值的时候是返回的false,既然里面肯定有值,那么可以尝试再次发送请求,可以尝试try 5次左右,只要获取到值就break,只要还是false那么就继续try,一旦超过5次可以做出一个响应获取不到内容。不知可否?