标签: redis

Redis (错误) NOAUTH 需要身份验证

我收到错误:

(error) NOAUTH Authentication required.
Run Code Online (Sandbox Code Playgroud)

当进入redis-cli并尝试显示KEYS *. 我只设置了一个requirepass不是authafaiac。我在redis.conf但不知道该怎么办。

redis

49
推荐指数
4
解决办法
13万
查看次数

SElinux:允许 httpd 连接到特定端口

我的系统运行 CentOS 6.4 和 apache2.2.15。SElinux 正在执行,我正在尝试通过我的 python/wsgi 应用程序连接到 redis 的本地实例。我收到错误 13,权限被拒绝。我可以通过以下命令解决这个问题:

setsebool -P httpd_can_network_connect

但是,我并不完全希望 httpd 能够连接到所有 tcp 端口。如何指定允许 httpd 连接的端口/网络?如果我可以制作一个模块来允许 httpd 连接到端口 6379 ( redis ) 或 127.0.0.1 上的任何 tcp,那将是可取的。不知道为什么我的偏执如此强烈,但是嘿...

有人知道吗?

redhat selinux redis apache-2.2

45
推荐指数
3
解决办法
10万
查看次数

Redis 集群:(错误)移动

我有一个具有以下节点的 Redis 集群:

192.168.0.14:6379 master (slots from 0 to 16383)
192.168.0.15:6379 slave (slots from 0 to 16383)
192.168.0.16:6379 master (without slots)
Run Code Online (Sandbox Code Playgroud)

文档说任何节点都可以将查询重定向到正确的节点。但我无法重定向来自 192.168.0.16:6379 主节点的请求。这是我尝试过的:

192.168.0.16:6379> set myKey myValue
(error) MOVED 16281 192.168.0.14:6379
192.168.0.16:6379> get myKey
(error) MOVED 16281 192.168.0.14:6379
Run Code Online (Sandbox Code Playgroud)

它既不写也不读。当我尝试从 192.168.0.14:6379 获取“myKey”时,它显示如下:

127.0.0.1:6379> get myKey
(nil)
Run Code Online (Sandbox Code Playgroud)

我的请求有什么问题?我使用的是 redis 服务器版本 3.2.5

cluster configuration redis

36
推荐指数
1
解决办法
4万
查看次数

最大化 Nginx 请求/秒的技巧?

我正在构建一个分析包,项目要求指出我每天需要支持 10 亿次点击。是的,“亿”。换句话说,每秒持续不少于 12,000 次点击,并且最好有爆发的空间。我知道为此我需要多台服务器,但我试图在“向其投入更多硬件”之前从每个节点中获得最大性能。

现在,我已经完成了点击跟踪部分,并进行了很好的优化。我几乎只是将请求直接保存到 Redis 中(以便以后使用 Hadoop 进行处理)。该应用程序是 Python/Django,带有用于网关的 gunicorn。

我的 2GB Ubuntu 10.04 Rackspace 服务器(不是生产机器)每秒可以处理大约 1200 个静态文件(使用 Apache AB 对单个静态资产进行基准测试)。相比之下,如果我用我的跟踪链接替换静态文件链接,我仍然每秒收到大约 600 个请求——我认为这意味着我的跟踪器得到了很好的优化,因为它只比提供相同的静态资产慢 2 倍反复。

然而,当我对数百万次点击进行基准测试时,我注意到一些事情——

  1. 没有磁盘使用——这是意料之中的,因为我已经关闭了所有 Nginx 日志,并且我的自定义代码除了将请求详细信息保存到 Redis 之外什么也不做。
  2. 非恒定内存使用——大概是由于 Redis 的内存管理,我的内存使用会逐渐上升然后下降,但它从来都不是我的瓶颈。
  3. 系统负载徘徊在 2-4 左右,即使在我最重的基准测试中,系统仍然有响应,我仍然可以手动查看http://mysite.com/tracking/pixel,几乎没有明显延迟,而我的(其他)服务器每执行 600 个请求第二。
  4. 如果我运行一个简短的测试,比如 50,000 次点击(大约需要 2m),我会得到稳定、可靠的每秒 600 个请求。如果我运行更长的测试(到目前为止尝试了 3.5m),我的 r/s 会降到大约 250。

我的问题——

一种。看起来我已经把这台服务器最大化了吗?1,200/s 静态文件 nginx 性能与其他人经历过的性能相当吗?

湾 对于此类大容量应用程序,是否有常见的 nginx 调优?我将工作线程设置为 64,将 gunicorn 工作线程设置为 8,但调整这些值似乎对我没有多大帮助或伤害。

C。是否有任何 linux 级别的设置可能会限制我的传入连接?

d. 在长时间运行的测试中,什么会导致我的性能下降到 250r/s?同样,在这些测试期间内存没有最大化,并且硬盘使用为零。

提前致谢,所有:)

编辑 这是我的 nginx 配置——http: //pastie.org/1450749——它主要是香草,明显的脂肪被修剪掉了。

nginx scaling high-volume redis

16
推荐指数
1
解决办法
2万
查看次数

扩展 Logstash(使用 redis/elasticsearch)

在超过 12 个 centos 5.8 服务器的集群上,我使用本地 logstash 发送器部署了 logstash,该发送器将发送/var/log/*/*.log回中央 Logstash 服务器。

我们尝试使用 rsyslogd 作为托运人,但由于 rsyslogd 的 ImFile 模块中的错误,如果远程端没有回复,日志将堆积在内存中。

我们目前使用 Redis 作为传输机制,因此 logstash01 已在本地运行 redis,绑定到这些日志的 VLAN 的 IP。

所以logstash-shipper 发送到logstash01 上的redis。logstash01 发送到在单独进程中运行的 Elasticsearch。

这就是我们所看到的。Elasticsearch 有 141 个阻塞线程。跟踪 elasticsearch 父项显示:

futex(0x7f4ccd1939d0, FUTEX_WAIT, 26374, NULL
Run Code Online (Sandbox Code Playgroud)

这是来自elasticsearch的jstack

这是来自 logstash 的 jstack

所以.. 昨晚,一些网络服务器(其日志由 logstash 跟踪)发疯了,平均负载超过 500。

在logstash01上,有这个

Dec 19 00:44:45 logstash01 kernel: [736965.925863] Killed process 23429 (redis-server) total-vm:5493112kB, anon-rss:4248840kB, file-rss:108kB
Run Code Online (Sandbox Code Playgroud)

所以OOM杀手杀死了Redis的服务器,然后指原木堆放在内存里面是已上市的东西..而服务器上莫名其妙意味着阿帕奇获取其短裤的扭曲。(坦率地说,我不确定如何,我只是假设它拖尾了日志)。

这是我关于事件如何展开的理论:

  1. 我们遇到了交通高峰。
  2. 产生了大量的日志。
  3. 这些堆积在 Redis 中,因为 logstash/elasticsearch 似乎只能每秒处理 300-400 …

redis elasticsearch logstash oom-killer

16
推荐指数
1
解决办法
1万
查看次数

Redis 不以 systemctl 开头

我已经在 ubuntu 16.04 机器上安装了 redis,如果我运行/usr/local/bin/redis-server /etc/redis/cluster/7000/redis.conf它,它会启动并且我可以毫无问题地连接到它。

但是我想使用它来启动它systemctl start redis,所以我在以下位置创建了以下文件/etc/systemd/system/redis7000.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/cluster/7000/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

并且 redis 配置已supervised systemd设置

我认为看起来不错,但我收到以下错误:

Jan 19 14:54:27 ip-172-31-42-18 systemd[1]: Started Redis In-Memory Data Store.
Jan 19 14:54:27 ip-172-31-42-18 redis-server[21661]: 21661:C 19 Jan 14:54:27.680 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
Jan 19 14:54:27 ip-172-31-42-18 redis-server[21661]: 21661:C 19 Jan 14:54:27.680 # Redis version=4.0.6, bits=64, commit=00000000, modified=0, pid=21661, just started …
Run Code Online (Sandbox Code Playgroud)

ubuntu redis systemd systemctl

15
推荐指数
2
解决办法
6万
查看次数

当Redis加载大数据集时,某些Linux系统变得非常慢

我收到了一个 Redis 用户的报告,我不知道该回复什么,因为我不是 Linux 及其调度程序领域的专家,但是我们(作为 Redis 项目)需要特别解决此类问题未来与 Redis Cluster 一样,我们将在一个盒子中同时运行许多 Redis 实例。所以我在这里寻求帮助。

问题:

  • 内核:“Linux redis1 2.6.32-305-ec2 #9-Ubuntu SMP Thu Apr 15 08:05:38 UTC 2010 x86_64 GNU/Linux”
  • 大量空闲 RAM,没有其他进程进行大量 I/O。
  • 重要的是,运行在 EC2 大实例上,而不是真正的服务器上。我从未在非虚拟化环境中看到过类似的东西。EC2 实例是:“High-Memory Extra Large Instance 17.1 GB 内存,6.5 ECU(2 个虚拟内核,每个虚拟内核 3.25 EC2 计算单元),420 GB 本地实例存储,64 位平台”

基本上,一旦您重新启动大型 Redis 实例,系统就会变得很慢,您无法再在 shell 上键入内容。当 Redis 加载一个实例时,它会使用 100% 的 CPU(它以尽可能快的速度加载数据)并顺序读取 dump.rdb 文件。I/O 并不是特别高,因为负载受 CPU 限制,而不是 I/O 限制。

为什么一个有两个 CPU 和大量 RAM 的盒子,磁盘上没有交换的东西,到底为什么应该停止处理这个工作负载?

我的印象是这与它是一个 EC2 实例有很大关系,因此与使用的虚拟化技术有关,因为我一直在我的盒子中加载 Redis 24 GB 数据集而没有任何问题(即使使用其他 …

linux performance amazon-ec2 redis

14
推荐指数
1
解决办法
2944
查看次数

避免 ElastiCache Redis 上的交换

我们的 ElastiCache Redis 实例交换一直存在问题。亚马逊似乎有一些粗略的内部监控,它会注意到交换使用高峰,并简单地重新启动 ElastiCache 实例(从而丢失我们所有的缓存项目)。这是过去 14 天我们 ElastiCache 实例上 BytesUsedForCache(蓝线)和 SwapUsage(橙线)的图表:

Redis ElastiCache BytesUsedForCache 和 Swap

您可以看到不断增长的交换使用模式似乎触发了我们的 ElastiCache 实例的重启,其中我们丢失了所有缓存项目(BytesUsedForCache 降至 0)。

我们 ElastiCache 仪表板的“缓存事件”选项卡具有相应的条目:

来源 ID | 类型 | 日期 | 事件

缓存实例 ID | 缓存集群| 2015 年 9 月 22 日星期二 07:34:47 GMT-400 | 缓存节点 0001 重新启动

缓存实例 ID | 缓存集群| 2015 年 9 月 22 日星期二 07:34:42 GMT-400 | 在节点 0001 上重新启动缓存引擎时出错

缓存实例 ID | 缓存集群| 2015 年 9 月 20 日星期日 11:13:05 GMT-400 | 缓存节点 0001 重新启动

缓存实例 ID | 缓存集群| …

swap memory-usage redis amazon-elasticache

14
推荐指数
1
解决办法
1万
查看次数

为什么 systemctl 在 CentOS 7 上不启动 redis-server?

我已经在新的 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
Run Code Online (Sandbox Code Playgroud)

尝试像这样启动它似乎默默地失败了(没有输出):

systemctl start redis-server # also tried redis-server.service
Run Code Online (Sandbox Code Playgroud)

以下是尝试连接时发生的情况:

redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
Run Code Online (Sandbox Code Playgroud)

但是手动启动它是有效的:

[root@redis ~]# redis-server /etc/redis.conf
[root@redis ~]# redis-cli
127.0.0.1:6379>
Run Code Online (Sandbox Code Playgroud)

任何人都知道出了什么问题,或者如何调试?

更新:输出/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 …
Run Code Online (Sandbox Code Playgroud)

redis systemctl centos7

13
推荐指数
1
解决办法
3万
查看次数

Redis 集群:最少 3 个主节点?

我正在评估 Redis 3 的集群功能(我目前正在独立使用 Redis 2),所以我正在阅读http://redis.io/topics/cluster-tutorial 上的信息。

在这份文件中,我读到了一个非常重要的信息:

请注意,按预期工作的最小集群需要包含至少三个主节点。对于您的第一次测试,强烈建议启动一个具有三个主节点和三个从节点的六节点集群。

真的吗?在我看来,如果我使用分片功能(数据在节点之间共享),这是正确的,但是如果我不需要它并且我很高兴只在一个节点上拥有数据怎么办?

我基本上需要一个主站和两个从站(所以如果一个节点出现故障,集群将处于活动状态),我可以在生产环境中进行这种配置吗?如果是,禁忌症是什么?

非常感谢您的帮助!

cluster redis

13
推荐指数
3
解决办法
3万
查看次数