Redis 无法正常关闭服务
前置知识:Redis最简单的基本命令:
1. 系统终端
./redis-server 启动redis服务
./redis-cli 启动redis客户端
./redis-cli shutdown 关闭redis服务
2. 在使用./redis-cli进入redis命令终端之后,
shutdown 关闭redis服务
save 保存存储至磁盘
set [key] [value] 对键[key]赋值[value]
get [key] 获取键[key]对应的值
问题描述:
Redis安装完成,使用./redis-server启动之后,运行./redis-cli进入redis终端,对键值的操作可正常完成,但shutdown与save会报错,具体在终端或者日志中体现为:
1. shutdown请求失败:
1550:M 02 Jan 18:22:48.778 # User requested shutdown...
1550:M 02 Jan 18:22:48.779 * Saving the final RDB snapshot before exiting.
1550:M 02 Jan 18:22:48.781 # Failed opening the RDB file dump.rdb (in server root dir /usr/share/redis/redis-3.2.6/src) for saving: Permission denied
1550:M 02 Jan 18:22:48.782 # Error trying to save the DB, can't exit.
2. save失败
1550:M 02 Jan 18:42:05.298 # Failed opening the RDB file dump.rdb (in server root dir /usr/share/redis/redis-3.2.6/src) for saving: Permission denied
shutdown和save失败的原因是一样的,对rdb文件dump.rdb的操作过程出现问题(虽然日志中显示permission denied,但不一定为权限问题,可能是目录或则文件无法生成等多方面)
解决方法:
综合考虑了以下两点(非常抱歉,因为两部分都同时修改后问题解决,所以无法确定是哪一点导致上述问题)
1. 在服务启动之后,日志信息有如下Warning显示:
1550:M 02 Jan 18:16:12.147 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1550:M 02 Jan 18:16:12.148 # Server started, Redis version 3.2.6
1550:M 02 Jan 18:16:12.148 # 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.
1550:M 02 Jan 18:16:12.148 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
据此推测可能由于某些存储上的上限极低(上述日志貌似默认0了),导致创建文件失败,这里笔者理解为:没有创建大小为X的文件的权限导致permission denied
2. 根据报错日志显示rdb文件是建立在 /usr/share/redis/redis-3.2.6/src(即redis安装目录)下,但实际查看时此目录并木有rdb文件,即使redis是在系统的root用户下启动服务,shutdown和save依旧会出现上述error。所以感觉在这里没有文件权限的可能性应该不大,不过最后还是修改配置文件更新了rdb文件的默认生成目录。
操作:
1. 解决Warning
A. 终端root用户执行:sysctl vm.overcommit_memory=1
B. 终端root用户执行:echo never > /sys/kernel/mm/transparent_hugepage/enabled
C. 终端root用户执行:vim /etc/rc.local,在打开文件之后,将echo never > /sys/kernel/mm/transparent_hugepage/enabled加入在语句exit 0之前
2. 更改rdb文件默认路径
修改conf文件,在这里建议,复制一份新的conf文件,如test.conf,在test.conf进行修改,之后启动redis时,使用脚本./redis-server test.conf启动服务。
修改方式:在redis原来的解压目录下找到redis.conf文件(也可以在终端用命令locate redis.conf查找其位置),
打开后定位到如下位置:
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir ./
将其中的"dir ./"修改为相应的目录,如"dir /home/distance/redis_dbfiles/"(这里需要注意最后的斜杠不能忘记,如果缺失斜杠可能会解析为文件而非目录),保存。
上述操作完成之后,可以正常save与shutdown。
Redis 无法正常关闭服务的更多相关文章
- windows下安装Redis并部署成服务
windows下安装Redis并部署成服务 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 一:下载 下载地址: windows版本: http ...
- Redis Sentinel 高可用服务搭建
阅读目录: 关于 Redis 的概念 关于 Redis Sentinel 的概念 搭建 Redis Server(master) 搭建 Redis Server(slave) 搭建 Redis Sen ...
- 使用Windows命令行启动关闭服务(net,sc用法)
下面两个命令最好以管理员方式启动cmd窗口,否则出现权限问题. 1.net用于打开没有被禁用的服务, NET命令是功能强大的以命令行方式执行的工具. 它包含了管理网络环境.服务.用户.登陆大部分重要的 ...
- Linux 下的 Redis 安装 && 启动 && 关闭 && 卸载
转自https://blog.csdn.net/zgf19930504/article/details/51850594 Redis 在Linux 和 在Windows 下的安装是有很大的不同的,和通 ...
- mysql和redis加入到windows服务
mysql加入到windows服务: mysqld --install Mysql5.6 mysqld --remove mysql5.6 从windows的服务中删除mysql服务 net st ...
- 在Windows下将Redis注册为本地服务
当前redis版本:3.2.100 通常情况下我们可以通过 redis-server.exe 和配置文件启动redis服务 : redis-server.exe redis.windows.conf ...
- 【转载】Redis Sentinel 高可用服务架构搭建
作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...
- Ubuntu 16.04设置Redis为开机自动启动服务
继上一篇文章http://www.cnblogs.com/EasonJim/p/7599941.html安装好Redis后,假设文件已经安装到/usr/local/redis目录下.假设我安装的版本为 ...
- CentOS 7.3 安装redis 4.0.2服务
CentOS 7.3 安装redis 4.0.2服务 1.下载解压 下载地址:/home/xiaoming/ wget http://download.redis.io/releases/redis- ...
随机推荐
- CSS中加号、星号及其他符号的作用
在理想世界里,正确的CSS应该在任何支持CSS的浏览器里工作良好.不幸的是, 我们并不是生活在理想的世界里,浏览 器们布满了BUG和不一致.创建一个跨浏览器并且显示一致的页面,CSS开发者必须想尽办法 ...
- html快速入门(基础教程+资源推荐)
1.html究竟是什么? 从字面上理解,html是超文本标记语言hyper text mark-up language的首字母缩写,指的是一种通用web页面描述语言,是用来描述我们打开浏览器就能看到的 ...
- int unsigned实验
create table t1(a int unsigned,b int unsigned); insert into t1 select 1,2; select 1-2 from t1; Error ...
- mysql5.7碰到的坑
日志输出时区问题 输出日志有这些信息2016-08-16T02:23:09.831827Z 112241 [Note] Aborted connection 112241 to db: 'test' ...
- 基于C#在WPF中使用斑马打印机进行打印【转】
原文链接:http://ju.outofmemory.cn/entry/132476 最近在项目中接手了一个比较有挑战性的模块——用斑马打印机将需要打印的内容打印出来.苦苦折腾了两天,总算有所收获,就 ...
- Win10
安装 调优 关闭cortana 对于SSD: 关闭windows search , superfetch服务,减少磁盘读写 关闭动画(个性化里面) 开启项优化 休眠文件(powercfg -h off ...
- ios企业应用部署
最近公司要整一套企业内部用的应用,ios版本不上线要求可以随时下载使用,先是申请了企业者开发账号,然后发布应用,部署在自己服务器上供用户下载安装. 第一步:准备好应用相关的东西,基本上就是两个文件,x ...
- Bootstrap <基础五>表格
Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> 为表格添加基础样式. <thead> 表格 ...
- CVPR历年Best Papers
作者:我爱机器学习原文链接:CVPR历年Best Papers CVPR (Computer Vision)(2000-2016) 年份 标题 一作 一作单位 2016 Deep Residual L ...
- Ubuntu 使用Gparted工具扩大第一分区方法步骤
Ubuntu 使用Gparted工具扩大第一分区方法步骤 环境:vmware9.01 .ubuntu12.04 需要的工具: 1.U盘,Universal-USB-Installer-1.9.6.4. ...