Redis 错误:Failed with result 'start-limit-hit'

背景

Redis 版本为 5.0.4;

文件 /etc/systemd/system/redis.service 内容如下:

[Unit]
Description=Redis Datastore Server
After=network.target [Service]
Type=forking
PIDFile=/var/run/redis/redis_6379
User=redis
Group=redis Environment=statedir=/var/run/redis
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p ${statedir}
ExecStartPre=/bin/chown -R redis:redis ${statedir}
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --supervised systemd
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always [Install]
WantedBy=multi-user.target

运行

在使用 systemctl 启动 Redis 时报错:

sudo systemctl daemon-reload
sudo systemctl start redis

错误日志:

Job for redis-server.service failed because the control process exited with error code. See "systemctl status redis-server.service" and "journalctl -xe" for details.

根据提示用命令 systemctl status redis-server.service 查看结果如下:

● redis-server.service - Redis Datastore Server
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit-hit) since Thu 2019-04-18 15:36:10 CST; 5s ago
Process: 8341 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd (code=exited
Process: 8337 ExecStartPre=/bin/chown -R redis:redis ${statedir} (code=exited, status=0/SUCCESS)
Process: 8333 ExecStartPre=/bin/mkdir -p ${statedir} (code=exited, status=0/SUCCESS) Apr 18 15:36:10 dl26 systemd[1]: Failed to start Redis Datastore Server.
Apr 18 15:36:10 dl26 systemd[1]: redis-server.service: Unit entered failed state.
Apr 18 15:36:10 dl26 systemd[1]: redis-server.service: Failed with result 'exit-code'.
Apr 18 15:36:10 dl26 systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
Apr 18 15:36:10 dl26 systemd[1]: Stopped Redis Datastore Server.
Apr 18 15:36:10 dl26 systemd[1]: redis-server.service: Start request repeated too quickly.
Apr 18 15:36:10 dl26 systemd[1]: Failed to start Redis Datastore Server.
Apr 18 15:36:10 dl26 systemd[1]: redis-server.service: Unit entered failed state.
Apr 18 15:36:10 dl26 systemd[1]: redis-server.service: Failed with result 'start-limit-hit'.

发现 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd 报错,执行该命令出现如下错误日志:

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 88
>>> 'protected-mode yes'
Bad directive or wrong number of arguments

问题是在处理配置文件时出现参数不匹配现象,原因是因为我在用源码安装 redis 后还用 apt-get install redis 的方法安装了一个旧版本的 redis,在 /usr/bin/ 目录下的 redis-server 不是最新版本,故出现不兼容的问题。

解决方法:

cp -r redis/src/redis-server /usr/bin/redis-server

再次执行:

sudo systemctl daemon-reload
sudo systemctl start redis

仍然报同样的错误,执行/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd,日志如下:

8436:C 18 Apr 2019 15:37:50.558 # Can't chdir to '/home/chenxiang/redis': No such file or directory

发现是目录名称不存在,文件 /etc/redis/redis.conf 中的目录名称为 /home/chenxiang/redis,而实际 redis 目录名称为 /home/chenxiang/redis-5.0.4,修改实际目录名称为 redis 即解决这一问题。

继续运行:

sudo systemctl daemon-reload
sudo systemctl start redis

出现了新的错误:

Job for redis-server.service failed because a timeout was exceeded. See "systemctl status redis-server.service" and "journalctl -xe" for details.

通过 systemctl status redis-server.service 查看日志信息:

● redis-server.service - Redis Datastore Server
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: activating (start) since Thu 2019-04-18 15:49:48 CST; 1min 21s ago
Process: 8533 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd (code=exited
Process: 8530 ExecStartPre=/bin/chown -R redis:redis ${statedir} (code=exited, status=0/SUCCESS)
Process: 8527 ExecStartPre=/bin/mkdir -p ${statedir} (code=exited, status=0/SUCCESS)
CGroup: /system.slice/redis-server.service
└─8535 /usr/bin/redis-server 127.0.0.1:6379 Apr 18 15:49:48 dl26 systemd[1]: Starting Redis Datastore Server...
Apr 18 15:49:48 dl26 redis-server[8533]: 8533:C 18 Apr 2019 15:49:48.250 # oO0OoO0OoO0Oo Redis is start
Apr 18 15:49:48 dl26 redis-server[8533]: 8533:C 18 Apr 2019 15:49:48.250 # Redis version=5.0.4, bits=64
Apr 18 15:49:48 dl26 redis-server[8533]: 8533:C 18 Apr 2019 15:49:48.250 # Configuration loaded
Apr 18 15:49:48 dl26 redis-server[8533]: 8533:C 18 Apr 2019 15:49:48.250 # systemd supervision requeste
Apr 18 15:49:48 dl26 systemd[1]: redis-server.service: PID file /var/run/redis/redis_6379 not readable

发现 redis-server.service 没有足够的权限访问 /var/run/redis/redis_6379,需要修改/etc/systemd/system/redis.service为:

[Unit]
Description=Redis Datastore Server
After=network.target [Service]
Type=forking
PIDFile=/var/run/redis/redis.pid
User=redis
Group=redis Environment=statedir=/var/run/redis
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p ${statedir}
ExecStartPre=/bin/chown -R redis:redis ${statedir}
ExecStartPost=/bin/sh -c "echo 6739 > /var/run/redis/redis.pid"
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --supervised systemd
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always [Install]
WantedBy=multi-user.target

其中修改两行:PIDFile=/var/run/redis/redis.pid,以及 ExecStartPost=/bin/sh -c "echo 6739 > /var/run/redis/redis.pid"

2019.4

Redis 错误:Failed with result 'start-limit-hit'的更多相关文章

  1. Redis 错误1067:进程意外终止,Redis不能启动,Redis启动不了

    Redis 错误1067:进程意外终止,Redis不能启动,Redis启动不了 >>>>>>>>>>>>>>> ...

  2. python pip安装模块提示错误failed to create process

    python pip安装模块提示错误failed to create process 原因: 报这个错误的原因,是因为python的目录名称或位置发生改动. 解决办法: 1.找到修改python所在的 ...

  3. Ubuntu18.04系统执行语句时出现错误Failed to load module "canberra-gtk-module"

    Ubuntu18.04系统执行gnuradio-companion时,命令行提示错误Failed to load module "canberra-gtk-module",虽然看起 ...

  4. golang 操作redis 错误:failed redigo: unexpected type for String, got type int64

    报错的代码: isExist,err := redis.String(conn.Do("EXISTS", key)) 这个操作返回的应该是bool类型,所有改成 isExist,e ...

  5. 错误处理(Operation Result)方法

    自己开发的公众号,可以领取淘宝内部优惠券 问题 现在有一个FileStorageService类,继承自IStorageService,具体实现如下 public interface IStorage ...

  6. IDEA通过Jedis操作Linux上的Redis;Failed to connect to any host resolved for DNS name问题

    testPing.java public class testPing { public static void main(String[] args) { Jedis jedis = new Jed ...

  7. Redis错误配置详解

    在使用Redis做缓存时,应用往往能得到非常高的性能.然而,如果配置不当,你将遇到很多令人头疼的问题,比如复制缓冲区限制.复制超时等. Redis提供了许多提高和维护高效内存数据库使用的工具.在无需额 ...

  8. redis错误总结

    1.同步错误.不停重试一直不成功 Full resync from master: e51165e2868c541e28134a287f9bfe36372bae34:80575961684 MASTE ...

  9. Maven错误Failed to read artifact descriptor for xxx:jar 和 missing artifact maven dependency

    可参考:http://stackoverflow.com/questions/6111408/maven2-missing-artifact-but-jars-are-in-place http:// ...

随机推荐

  1. C#进度条简单应用

    进度条表示文件复制的进度: 1.将进度条最大值设置为需要复制的文件总数 2.遍历文件时每复制一个文件之后,进度条+1 ;//文件总数 progressBar1.Value = progressBar1 ...

  2. 使用charles过滤网络请求

    1.对网络请求进行过滤,只监控向指定目录服务器上发送的请求 有以下方法: (1)在Structure视图或者Sequence视图的Filter 栏中填入需要过滤出来的关键字(适合临时性封包过滤) 或者 ...

  3. Byword for Mac(Markdown编辑器)中文版

    还在找Markdown编辑器吗?那不妨试试Byword for Mac吧!这是一款轻量级的富文本编辑器,byword mac版提供了完整的Markdown支持,包含脚注.表格.交叉引用等功能,Bywo ...

  4. 【LeetCode每天一题】Add Binary(二进制加法)

    Given two binary strings, return their sum (also a binary string).The input strings are both non-emp ...

  5. Percona-Toolkit 之 pt-archiver 总结

    pt-archiver - Archive rows from a MySQL table into another table or a file. pt-archiver nibbles reco ...

  6. (转) jmeter 获取cookie

      转自 https://blog.csdn.net/five3/article/details/53842283 jmeter是测试过程中会被用到的一个测试工具,我们即可用来进行压力的压测,也可以用 ...

  7. OI养老专题03:让坏人出列的约瑟夫问题

    问题是这样的:一共有2n个人,其中有n个好人,n个坏人.好人的编号是1~n,坏人的编号是n+1~2n.要求你求出最小的m(报数到m的人出局),让前n个出局的人都是坏人. 似乎除了暴力,我们想不出其它的 ...

  8. laravel----------carbon时间类的使用介绍

    echo Carbon::today();       // 对象 2018-04-17 00:00:00echo Carbon::tomorrow(); // 对象 2018-04-18 00:00 ...

  9. 设计 mysql的单例模式及完整功能

    class MySQLDB{ private $host; private $port; private $username; private $password; private $charset; ...

  10. python解析FreeMind思维导图

    记录瞬间 在实际工作中,通常需要使用思维导图进行一些分析和设计,但是,在设计好之后,想要把思维导图的内容转化成文字进行输出怎么做呢? 使用python(当然可以使用其他的语言进行处理)可以很好的解决这 ...