Назад | Перейти на главную страницу

Приложение Rails жалуется, что не может подключиться к memcached, но я уверен, что оно работает

Все было хорошо, затем я перезагрузил сервер.

Сейчас:

$ ps aux | grep memcache
1000     27168  0.0  0.0 121972  1056 pts/0    Sl   15:18   0:00 memcached -m 64 -p 11211 -u nobody -l 127.0.0.1
1000     27816  0.0  0.0   7628   956 pts/0    S+   15:36   0:00 grep memcache

тем временем журнал приложения rails получает массу этого:

MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)
MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)
MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)
MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)
MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)
MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)
MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)
MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)

Поскольку я больше разработчик, чем серверный парень, и что мы на самом деле иметь "серверный парень", и это в производстве ... с чего мне начать?

netstat -tupln | grep -i memcache

Это скажет вам, прослушивает ли ваш экземпляр memcache и на каком порту. Я бы проверил / etc / hosts, что определен localhost. Это должно быть по умолчанию, но если кто-то доволен DD в Vi, у вас могут возникнуть настоящие проблемы. Ваш вывод PS показывает memcache, начинающийся с -l 127.0.0.1, но ваш скрипт подключается к 'localhost' - это по определению одно и то же, но это произвольно, поскольку вы можете удалить строку localhost или изменить псевдоним на IP-адрес на eth0.

memcache - это протокол с открытым текстом, поэтому попробуйте подключиться к порту через Telnet

telnet 127.0.0.1 11211

вы должны получить такой же ответ от

telnet localhost 11211

У нас была эта проблема, и она была решена после замены клиента memcache.

https://github.com/mperham/dalli

(было не так уж много работы, чтобы изменить)