Pourquoi systemctl ne démarre-t-il pas redis-server sur CentOS 7?

13

J'ai installé redis sur une nouvelle box CentOS 7 mais je ne peux pas le démarrer en utilisant systemctl.

Il a été installé comme ceci:

rpm -i http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
yum install redis

Tenter de le démarrer comme ceci semblait échouer en silence (il n'y avait pas de sortie):

systemctl start redis-server # also tried redis-server.service

Voici ce qui se passe lorsque vous essayez de vous connecter:

redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

Mais le démarrer manuellement fonctionne:

[root@redis ~]# redis-server /etc/redis.conf
[root@redis ~]# redis-cli
127.0.0.1:6379>

Quelqu'un sait ce qui ne va pas, ou comment déboguer cela?

MISE À JOUR: La sortie de /var/log/redis/redis.logest ci-dessous. En fait, c'est un VPS de 512 Mo de RAM.

[1972] 29 Jul 18:52:16.258 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
[1972] 29 Jul 18:52:16.258 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
[1972] 29 Jul 18:52:16.258 # Current maximum open files is 1024. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 2.8.13 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1972
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[1972] 29 Jul 18:52:16.259 # Server started, Redis version 2.8.13
[1972] 29 Jul 18:52:16.259 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[1972] 29 Jul 18:52:16.260 * DB loaded from disk: 0.001 seconds
[1972] 29 Jul 18:52:16.260 * The server is now ready to accept connections on port 6379
[1972] 29 Jul 18:52:16.265 # User requested shutdown...
[1972] 29 Jul 18:52:16.265 * Saving the final RDB snapshot before exiting.
[1972] 29 Jul 18:52:16.267 * DB saved on disk
[1972] 29 Jul 18:52:16.267 * Removing the pid file.
[1972] 29 Jul 18:52:16.267 # Redis is now ready to exit, bye bye...

Et le statut:

[root@redis ~]# systemctl status redis-server
redis-server.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis-server.service; disabled)
   Active: inactive (dead)

Jul 29 18:52:16 redis systemd[1]: Starting Redis persistent key-value database...
Jul 29 18:52:16 redis systemd[1]: Started Redis persistent key-value database.
Zubin
la source
2
Cela a commencé OK, bien sûr, puis User requested shutdown...aucune raison évidente pour cela.
Michael Hampton
@MichaelHampton oui, il s'arrête immédiatement. J'aimerais vraiment savoir pourquoi! La seule différence que je peux voir en l'exécutant manuellement est qu'il s'exécute en tant que root (pas en tant qu'utilisateur redis).
Zubin

Réponses:

25

Enfin, corrigé. Systemd nécessite que redis s'exécute sans être démonisé, donc la configuration devait changer:

# /etc/redis.conf
daemonize yes # << comment this out
Zubin
la source
Génial. Il s'agit d'un bogue dans le fichier d'unité systemd, et vous devez le signaler .
Michael Hampton
Avez-vous déjà résolu cela? Vous ne l'avez pas marqué comme résolu.
Michael Hampton
1
@MichaelHampton Oui, la technique ci-dessus a fonctionné. De plus, j'ai déposé le bogue et il a été corrigé.
Zubin
vous bénisse, beau salaud
Artur Sapek
J'ai constaté que je devais également modifier le fichier redis.service (dans /etc/systemd/system/multi-user.target.wants), qui est lié à /usr/lib/systemd/system/redis.server. J'ai changé --daemonize yespour, vous l' aurez deviné, --daemonize no.
Martin