CentOS 7에서 systemctl이 redis-server를 시작하지 않는 이유는 무엇입니까?


13

새 CentOS 7 상자에 redis를 설치했지만 systemctl을 사용하여 시작할 수 없습니다.

다음과 같이 설치되었습니다.

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

다음과 같이 시작하려고 시도하면 자동으로 실패한 것 같습니다 (출력이 없음).

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

연결하려고 할 때 발생하는 상황은 다음과 같습니다.

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

그러나 수동으로 시작하면 작동합니다.

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

아무도 무슨 일이 일어나고 있는지, 또는 이것을 디버깅하는 방법을 알고 있습니까?

업데이트 : 출력 /var/log/redis/redis.log이 아래에 있습니다. Btw는 512MB RAM VPS입니다.

[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...

그리고 상태 :

[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.

2
물론 그것은 시작되었고, User requested shutdown...그럴만 한 이유가 없습니다.
마이클 햄튼

@MichaelHampton 네, 즉시 종료됩니다. 정말 이유를 알고 싶습니다! 내가 수동으로 실행하는 유일한 차이점은 루트로 실행한다는 것입니다 (redis 사용자 아님).
Zubin

답변:


25

마지막으로 수정했습니다. Systemd는 redis가 데모되지 않은 상태로 실행되도록 요구하므로 구성을 변경해야했습니다.

# /etc/redis.conf
daemonize yes # << comment this out

큰. 시스템 단위 파일의 버그 이므로이를보고 해야 합니다 .
마이클 햄튼

이 문제를 해결 한 적이 있습니까? 해결 된 것으로 표시하지 않았습니다.
Michael Hampton

1
@MichaelHampton Yep, 위의 기술이 효과가있었습니다. 또한 버그를 신고했으며 수정되었습니다.
Zubin

축복합니다, 당신은 아름다운 놈
Artur Sapek

/usr/lib/systemd/system/redis.server에 링크 된 redis.service 파일 (/etc/systemd/system/multi-user.target.wants에 있음)도 편집해야한다는 것을 알았습니다. 나는 --daemonize yes당신이 그것을 추측으로 변경 했습니다 --daemonize no.
Martin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.