Я установил memcache на свой сервер CentOS, а также соответствующие библиотеки для php:
Несмотря на то, что я установил их оба, я закончил использовать Memcache
$memcache = new Memcache;
Поскольку я хотел, чтобы служба memcache запускалась автоматически после перезагрузки сервера, я сделал следующее:
memcached -d -u nobody -m 512 -p 11211 127.0.0.1
chkconfig memcached on
Потом проверил:
chkconfig --list | grep memcache
> memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Через несколько минут использования:
echo stats | nc 127.0.0.1 11211
STAT pid 30412
STAT uptime 1616
STAT time 1424280050
STAT version 1.4.15
STAT libevent 1.4.13-stable
STAT pointer_size 64
STAT rusage_user 0.053991
STAT rusage_system 0.152976
STAT curr_connections 42
STAT total_connections 144
STAT connection_structures 43
STAT reserved_fds 20
STAT cmd_get 639
STAT cmd_set 360
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 262
STAT get_misses 377
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 147954
STAT bytes_written 455620
STAT limit_maxbytes 536870912
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 138385
STAT curr_items 359
STAT total_items 360
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 1
END
Несколько недель все работало нормально. После этого я решил проверить статус службы, и по какой-то причине memcache вообще не работал. Мне пришлось поставить его обратно (в те недели я в какой-то момент перезагружал сервер):
memcached -d -u nobody -m 512 -p 11211 127.0.0.1
Почему после перезагрузки кэш памяти не запускался автоматически? Разве это не то, что chkconfig memcached on
для? Почему он мог перестать работать?
Вы должны проверить, что происходит (журналы и т. Д.), Когда вы пытаетесь запустить
service memcached start
после остановки экземпляра, запущенного вручную. Если это не помогает, проверьте файл boot.log и при следующем запуске системы проверьте журналы как можно раньше.
> memcached 0: выключено 1: выключено 2: выключено 3: выключено 4: выключено 5: выключено 6: выключено
Memcached не настроен на автоматический запуск, он отключен для всех уровней выполнения.
Вы должны попробовать включить его снова.
У меня нет точного ответа «почему», но у меня есть решение этой проблемы, как указано и описано ниже;
Шаг 1) Создайте исполняемый файл файл с именем
/usr/local/bin/memcached
и поместите ниже содержимое в этот файл;
#!/bin/sh
echo Checking for memcached instance...
result=$(pidof memcached)
echo "$result"
if [ -z "$result" ]; then
echo memcached is not running. Attempt to start it...
/usr/bin/memcached -u memcached -p 11211 -m 1024 -c 1024 -l localhost -d &
else
echo memcached is already running. Do nothing.
fi
echo End of script.
Шаг 2) Поместите этот скрипт в / etc / crontab
* * * * root /usr/local/bin/memcached
Это все, что я сделал. Этот сценарий будет выполняться каждую минуту и проверять наличие запущенных экземпляров memcached.
Надеюсь на эту помощь.