我已经在新的 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
如下。顺便说一下,这是一个 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.
答案1
最后,修复了它。Systemd 需要 redis 以非守护进程方式运行,因此需要更改配置:
# /etc/redis.conf
daemonize yes # << comment this out
答案2
只是为了补充已接受的答案,我最近更新redis
并遇到了同样的问题。配置文件/etc/redis.conf
已经有了这一行daemonize no
,但我仍然遇到这个问题。
我通过告诉redis
与主管互动来解决这个问题systemd
:
# /etc/redis.conf
supervised auto # or systemd
作为参考,我使用的系统运行的是 Arch Linux。