更新:这似乎已基本修复。我不是 100% 确定我做了什么,但它正在运行,而且我的网站也可以正确加载它。但是,我仍然遇到关于 PID 不可读的错误 #1。
我希望我能得到一些帮助来弄清楚为什么 Redis-Server 不能为我运行。大约 3 天前,我让它完全运行起来,但当我尝试开始从我的 WordPress 安装中删除其他缓存程序时。我不知何故破坏了Redis。接下来,我列出了这些错误,以及我如何尝试纠正它们。请让我知道您的想法以及我以后如何尝试解决它。
我最初从 redis.io 的源代码安装了 Redis-Server,但是一旦损坏,我最终尝试从源代码重新安装,并且还尝试从apt. 我在两种类型的安装上都遇到相同的错误。
uname -a:Linux serverName.tld 4.4.0-97-generic #120-Ubuntu SMP 九月 19 日星期二 17:28:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 乌班图16.04 Redis-服务器4.0.2
我使用以下教程来安装 Redis-Server:Install Redis Object Cache for WordPress PHP 7 on Ubuntu 16.04
错误:
redis-server.service:启动后PID文件/var/run/redis/redis.pid不可读(还?):没有这样的文件或目录
您请求的 maxclients 为 20000,需要至少 20032 个最大文件描述符。由于操作系统错误,服务器无法将最大打开文件数设置为 20032:不允许操作。当前最大打开文件数为 4096。 maxclients 已减少至 4064 以补偿 ulimit 较低的情况。如果您需要更高的最大客户端数,请增加“ulimit -n”。
警告您的内核中启用了透明大页 (THP) 支持。这将导致 Redis 出现延迟和内存使用问题。要解决此问题,请以 root 身份运行命令“echo never > /sys/kernel/mm/transparent_hugepage/enabled”,并将其添加到 /etc/rc.local 中,以便在重新启动后保留设置。禁用THP后必须重新启动Redis
警告 overcommit_memory 设置为 0!在内存不足的情况下,后台保存可能会失败。要解决此问题,请将“vm.overcommit_memory = 1”添加到/etc/sysctl.conf,然后重新启动或运行命令“sysctl vm.overcommit_memory=1”以使其生效。
我发出以下命令来尝试解决此错误......它似乎只有时出现:
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf; sysctl -p
Run Code Online (Sandbox Code Playgroud)这个错误每隔一段时间就会发生一次
警告:无法强制执行 TCP 积压设置 511,因为 /proc/sys/net/core/somaxconn 设置为较低值 o
我通过执行命令添加了以下内容:
echo "net.core.somaxconn=65536" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog=8192" >> /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)要验证它们是否已添加... sysctl -p
下面是我的整个 /etc/systemd/system/redis-server.service 文件。
[单元] 描述=Redis 数据存储服务器 之后=网络.目标 [服务] 类型=分叉 PIDFile=/var/run/redis/redis.pid 用户=redis 组=www-数据 限制NOFILE=64000 权限仅开始=true \# 为 PIDFile 目录创建并设置权限 ExecStartPre=/bin/mkdir -p /var/run/redis ExecStartPre=/bin/chown redis:www-data /var/run/redis ExecStartPre=/bin/chmod 775 -R /var/run/redis \# 创建并设置日志目录的权限 \# 这被注释掉了,因为我收到不允许该操作的错误。 \#ExecStartPre=/bin/mkdir -p /var/log/redis \#ExecStartPre=/bin/chown redis -R /var/log/redis \#ExecStartPre=/bin/chmod 775 -R /var/log/redis \# 创建并设置日志文件的权限 ExecStartPre=/bin/touch /var/log/redis/redis-server.log ExecStartPre=/bin/chown redis /var/log/redis/redis-server.log ExecStartPre=/bin/chmod 775 /var/log/redis/redis-server.log ExecStart=/sbin/start-stop-daemon --start --pidfile /var/run/redis/redis.pid --umask 007 --exec /usr/bin/redis-server -- /etc/redis/redis.会议 ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/usr/bin/redis-cli 关闭 重新启动=始终 [安装] WantedBy=多用户.target
我已经无计可施了。在经历了无法让 memcached 工作的问题后,我转向了 Redis-Server。memcached 工作的那一次,我在我的 WordPress 网站上尝试过,它非常快。我对这次表演印象非常深刻,也非常满意。但显然,我无法让它工作,这就是我寻求帮助的原因。
小智 5
可能不太可能,因为您没有提到其他更改,无论如何我都会发布。
也许这是 IPv6/IPv4 问题。如果您在任何时候禁用了 IPv6,您都会得到您所描述的结果。
查看/var/log/redis/redis-server.log。这是我在我的中发现的:
17008:C 24 Aug 07:17:45.193 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
17008:C 24 Aug 07:17:45.193 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=17008, just started
17008:C 24 Aug 07:17:45.193 # Configuration loaded
17009:M 24 Aug 07:17:45.195 # Creating Server TCP listening socket ::1:6379:
bind: Cannot assign requested address
Run Code Online (Sandbox Code Playgroud)
Redis 尝试使用 IPv6 (::1:6379:)。我在该系统上禁用了 IPv6(出于某种原因),但是默认的 redis-cache 配置同时启用了 IPv4 和 v6。如果您在该日志中看到“无法分配”错误,请查看 /etc/redis/redis.conf。“开箱即用”配置启用 IPv6 (::1):
bind 127.0.0.1 ::1
Run Code Online (Sandbox Code Playgroud)
所以我删除了它,将其更改为:
bind 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
之后Redis 就启动了。
希望有帮助!
| 归档时间: |
|
| 查看次数: |
18490 次 |
| 最近记录: |