using yii with memcache, error when one of two server fails

强颜欢笑 提交于 2019-12-24 03:08:07

问题


i have a problem with yii and storing data in memcache. For my application i use system.caching.CMemCache and the following config:

'servers' => array(
    'server1' => array('host' => 'localhost', 'port' => 11211, 'weight' => 50),
    'server2' => array('host' => '192.168.0.2', 'port' => 11211, 'weight' => 50)
),

if memcache on both systems is running, everything is ok and the values get spread up on the servers. but if one server fails (or if i stop the memcache manually) the application throw errors like

MemcachePool::get(): Server 192.168.0.2 (tcp 11211, udp 0) failed with: Connection refused (111)

this isn't really nice, i thought if one server failed yii would choose another server for reading and writing or at least produce some cache misses and do not throw an exeption :(

is this normal or are there some configuration issues?


回答1:


I think its normal you are seeing those messages as discussed here, given you are using memcache extension

And also read this SO.

There are two version of extension for php one is memcache while the other is memcached. You can install each of them on ubuntu box like :

 sudo apt-get install php5-memcache
  and 
 sudo apt-get install php5-memcached 

Memecached extension handles failover situations ,as I read from the above links and confirm by testing following settings in yii

'cache'=>array(
            'class'=>'CMemCache',
            'useMemcached'=>true,
            'servers'=>array(
                array(
                    'host'=>'localhost',
                    'port'=>11211,
                    'weight'=>60,
                ),
                array(
                    'host'=>'192.168.33.31',
                    'port'=>11211,
                    'weight'=>30,
                ),
            ),
        ),

Install the memcached extension for php as described above and add 'useMemcached'=>true, setting to cache configs.As I test on my localhost, it handles the failover situation, but the page response time drops significantly.

Hope this will be helpful.




回答2:


Is this variable true?

http://www.php.net/manual/en/memcache.ini.php#ini.memcache.allow-failover

Otherwise this link can also be useful:

Memcache : Confusions

(Probably this is only a notice.)



来源:https://stackoverflow.com/questions/19299259/using-yii-with-memcache-error-when-one-of-two-server-fails

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!