redis-server.service: Отказавший с результатом 'тайм-аут'. - Больше ошибок перечислено внутри

Обновление: Это, кажется, главным образом фиксируется. Я не на 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

Ошибки:

  1. redis-server.service: файл PID/var/run/redis/redis.pid не читаемый (уже?) после того, как запустите: Никакой такой файл или каталог

    • Я попытался исправить это путем проверки, что/var/run/redis/уже создается. Я также удостоверился, что (в отдельные времена), что/var/run/redis/принадлежал redis:redis и также redis:www-данным (моя apache2 группа). Я также делал попытку многих схем полномочий 777, 755, 775, 007, 770.
      Через все это, я иногда все еще получаю ошибку.
    • Я также вручную создал/var/run/redis/redis.pid файл с тем же типом полномочий, которые я упомянул выше.
    • Наконец, на некоторые рекомендации на веб-сайтах, я также изменил PIDFile на redis-server.pid...
    • Ни одно из этих изменений действительно, кажется, не сохраняется и последовательно работает на это сообщение об ошибке.
  2. Вы запросили maxclients 20 000 требований по крайней мере 20 032 макс. дескрипторов файлов. Сервер не может установить максимальные открытые файлы на 20 032 из-за ошибки ОС: Операция, не разрешенная. Текущие максимальные открытые файлы 4096. maxclients был уменьшен до 4 064 для компенсации низкого ulimit. Если Вам нужно выше maxclients, увеличиваются 'ulimit-n'.

    • Это, кажется, под влиянием части "MaxClients" redis.conf файла... Я попытался изменить опцию MaxClients путем комментирования, и она устанавливает его на значение по умолчанию 10000... Я также изменил это на 20 000 в redis.conf, и число подходит 20032..., таким образом, всегда кажется, что требуется еще 32 файла, чем мне разрешают или что-то.
    • Я изменился/etc/systemd/system/redis-server.service файл для включения "LimitNOFILE=64000"... это не имело значения. Я перезапустил сервер - никакое изменение.
    • Я изменился/etc/default/redis-server и не прокомментировал "ULIMIT=65536"... перезапущенный, снова никакое изменение.
  3. ПРЕДУПРЕЖДЕНИЮ Вас включили поддержку Прозрачных огромных страниц (THP) в Вашем ядре. Это создаст задержку и проблемы использования памяти с Redis. Для фиксации этой проблемы выполняет команду 'эхо никогда>/sys/kernel/mm/transparent_hugepage/enabled' как корень и добавляют его к/etc/rc.local для сохранения установки после перезагрузки. Redis должен быть перезапущен после того, как THP отключен

    • Это было исправлено, после того как я дал следующую команду:
      отзывайтесь эхом никогда>/sys/kernel/mm/transparent_hugepage/enabled
      • Я также добавил вышеупомянутую команду к/etc/rc.local для сохранения прошлой перезагрузки. Снова, это, кажется, было разрешено.
  4. ПРЕДУПРЕЖДЕНИЕ 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 
      

    Эта ошибка происходит время от времени

  5. ПРЕДУПРЕЖДЕНИЕ: неудовлетворенная установка 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, и это было СУПЕР быстро. Я был очень впечатлен и очень доволен производительностью. Однако, очевидно, я не могу заставить это работать, который является, почему я прошу помощи.

1
задан 23 October 2017 в 19:52

3 ответа

Могло бы быть маловероятным, так как Вы не упоминаете другие изменения, я отправлю так или иначе.

Возможно, это - 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 запустил право после этого.

Надежда, которая помогает!

1
ответ дан 7 December 2019 в 15:28

Попробуйте это (протестировал 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

0
ответ дан 7 December 2019 в 15:28

Дополнение к ответу @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 изменений все же.

0
ответ дан 7 December 2019 в 15:28

Другие вопросы по тегам:

Похожие вопросы: