Обновление: Это, кажется, главным образом фиксируется. Я не на 100% уверен, что я сделал, но это работает, и также мои сайты загружаются с ним правильно. Однако у меня все еще есть ошибка № 1 о PID, не являющемся читаемым.
Я надеюсь, что могу получить некоторую справку с выяснением, почему Redis-сервер не будет работать за мной. У меня был он абсолютно рабочий приблизительно 3 дня назад, но когда я попытался начать удалять другие программы кэширования из своей установки WordPress. Я так или иначе повредил Redis. Следующее, я перечислил ошибки, и затем как я попытался исправить их. Сообщите мне то, что Ваши мысли и как я могу попытаться зафиксировать его продвижение.
Я установил Redis-сервер первоначально из источника от redis.io, но после того как это повредилось, я закончил тем, что пытался переустановить из источника и также попытался переустановить от apt
. У меня есть те же ошибки на обоих типах установок.
uname -a: Linux serverName.tld 4.4.0-97-generic #120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux Ubuntu 16.04 Redis-Server 4.0.2
Я использовал следующее учебное руководство для установки Redis-сервера: Установите Кэш Объекта Redis для WordPress PHP 7 на Ubuntu 16.04
Ошибки:
redis-server.service: файл PID/var/run/redis/redis.pid не читаемый (уже?) после того, как запустите: Никакой такой файл или каталог
Вы запросили maxclients 20 000 требований по крайней мере 20 032 макс. дескрипторов файлов. Сервер не может установить максимальные открытые файлы на 20 032 из-за ошибки ОС: Операция, не разрешенная. Текущие максимальные открытые файлы 4096. maxclients был уменьшен до 4 064 для компенсации низкого ulimit. Если Вам нужно выше maxclients, увеличиваются 'ulimit-n'.
ПРЕДУПРЕЖДЕНИЮ Вас включили поддержку Прозрачных огромных страниц (THP) в Вашем ядре. Это создаст задержку и проблемы использования памяти с Redis. Для фиксации этой проблемы выполняет команду 'эхо никогда>/sys/kernel/mm/transparent_hugepage/enabled' как корень и добавляют его к/etc/rc.local для сохранения установки после перезагрузки. Redis должен быть перезапущен после того, как THP отключен
ПРЕДУПРЕЖДЕНИЕ overcommit_memory установлено на 0! Фоновое сохранение может перестать работать при низком условии памяти. Для устранения этой проблемы добавляют 'vm.overcommit_memory = 1' к/etc/sysctl.conf и затем перезагрузке или выполняют команду 'sysctl vm.overcommit_memory=1', чтобы это вступило в силу.
Я дал следующую команду, чтобы попытаться сражаться с этой ошибкой... это, кажется, только иногда обнаруживается:
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf; sysctl -p
Эта ошибка происходит время от времени
ПРЕДУПРЕЖДЕНИЕ: неудовлетворенная установка TCP 511 не может быть осуществлена, потому что/proc/sys/net/core/somaxconn установлен на нижнее значение o
Я добавил следующее путем выполнения команд:
echo "net.core.somaxconn=65536" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog=8192" >> /etc/sysctl.conf
Для проверки они были добавлены... sysctl-p
Ниже мое все/etc/systemd/system/redis-server.service файл.
[Unit] Description=Redis Datastore Server After=network.target [Service] Type=forking PIDFile=/var/run/redis/redis.pid User=redis Group=www-data LimitNOFILE=64000 PermissionsStartOnly=true \# Create and set perms for PIDFile directory ExecStartPre=/bin/mkdir -p /var/run/redis ExecStartPre=/bin/chown redis:www-data /var/run/redis ExecStartPre=/bin/chmod 775 -R /var/run/redis \# Create and set perms for Log directory \# This is commented out because I receive errors that the operation is not permitted. \#ExecStartPre=/bin/mkdir -p /var/log/redis \#ExecStartPre=/bin/chown redis -R /var/log/redis \#ExecStartPre=/bin/chmod 775 -R /var/log/redis \# Create and set perms for log file ExecStartPre=/bin/touch /var/log/redis/redis-server.log ExecStartPre=/bin/chown redis /var/log/redis/redis-server.log ExecStartPre=/bin/chmod 775 /var/log/redis/redis-server.log ExecStart=/sbin/start-stop-daemon --start --pidfile /var/run/redis/redis.pid --umask 007 --exec /usr/bin/redis-server -- /etc/redis/redis.conf ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/usr/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.target
Я в своем конце остроумия. Я переключился на Redis-сервер после борьбы с отказом получить работу memcached. Единственное время, когда memcached работал, я испытал его на своих сайтах WordPress, и это было СУПЕР быстро. Я был очень впечатлен и очень доволен производительностью. Однако, очевидно, я не могу заставить это работать, который является, почему я прошу помощи.
Могло бы быть маловероятным, так как Вы не упоминаете другие изменения, я отправлю так или иначе.
Возможно, это - IPv6 / проблема IPv4. При отключении IPv6 в какой-либо точке Вы получите результат, который Вы описали.
Смотрите на /var/log/redis/redis-server.log. Это - то, что я нашел в моем:
17008:C 24 Aug 07:17:45.193 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
17008:C 24 Aug 07:17:45.193 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=17008, just started
17008:C 24 Aug 07:17:45.193 # Configuration loaded
17009:M 24 Aug 07:17:45.195 # Creating Server TCP listening socket ::1:6379:
bind: Cannot assign requested address
Redis пытался использовать IPv6 (:: 1:6379:). Я отключил IPv6 в этой системе (по причинам), однако redis-конфигурация-кэша по умолчанию включает и IPv4 и v6. Если Вы видите, "Не может присвоить" ошибку в том журнале, смотреть на/etc/redis/redis.conf. Конфигурация "из поля" включает IPv6 (:: 1):
bind 127.0.0.1 ::1
Таким образом, я удалил это, изменив его на:
bind 127.0.0.1
Redis запустил право после этого.
Надежда, которая помогает!
Попробуйте это (протестировал Ubuntu 18.04):
sudo sh -c 'echo "httpd soft nofile 4096" >> /etc/security/limits.conf'
sudo sh -c 'echo "httpd hard nofile 10240" >> /etc/security/limits.conf'
sudo sh -c 'echo "fs.file-max = 100000" >> /etc/sysctl.conf'
sudo sh -c 'echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf'
sudo sh -c 'echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf'
sudo apt -y install redis-server redis-tools
sudo service redis-server stop
sudo sed -i '/^bind/s/bind.*/bind 0.0.0.0/' /etc/redis/redis.conf
if [ ! -d /var/run/redis ]; then sudo mkdir -p /var/run/redis && sudo chown redis /var/run/redis; fi
sudo service redis-server start
источник: Ntopng maravento.com
Дополнение к ответу @Chris, но прибывающий из другого пути. Имел сервер Ubuntu с включенным IPv6, но redis-server
попытка состояла в том, чтобы привязать IPv4 вместо этого...
11558:C 16 Mar 21:09:24.694 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
11558:C 16 Mar 21:09:24.694 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=11558, just started
11558:C 16 Mar 21:09:24.694 # Configuration loaded
11569:M 16 Mar 21:09:24.709 # Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use
Решением было изменение redis.conf от:
bind 127.0.0.1
... быть:
bind 127.0.0.1 ::1
Хорошо работавший после этого... убедиться перезагрузить Ваш сервер после любых связанных с IP изменений все же.