Articles of redis

排除Redis失速故障

我们有几个运行在服务器上的redis实例。 还有多个networking层服务器连接到那些同时经历失速的实例。 我们当时正在进行数据包捕获,根据以下wireshark IO图表,发现在TX和RXstream量中都有一个堵塞: 在redis调用中有一个相关的高峰,但我怀疑这是一个影响,而不是由于时间延迟的原因: 以15 / s的采样间隔(这是作为一个计数器收集),平均有136个内存分配停顿: 在同一时间迁移的NUMA页面的数量似乎也不是很多: 虽然上面看起来很正常,但是有两个连续的数据点,这使得它与图中看到的其他300多个尖峰相比是不正常的。 记忆压实失败和压实摊位也有相关的高峰: 尽pipe我在这里有大量的内存信息,但是我的Linux内存知识还不够深入,无法真正假设一个把所有这些信息汇集在一起​​解释失速的好故事。 任何拥有深厚的Linux内存知识(也许还有深度redis内存知识)的人都可以将这些信息结合在一起吗? 我们以15秒的时间间隔从/ proc / vmstat收集所有的统计数据,所以如果有任何数据可能会增加到这个请求。 我只是挑选了一些看起来有趣的事情,特别是资源分配,numa迁移和压缩失败。 总数如下,覆盖20天的正常运行时间: [kbrandt@ny-redis01: ~] uptime 21:11:49 up 20 days, 20:05, 8 users, load average: 1.05, 0.74, 0.69 [kbrandt@ny-redis01: ~] cat /proc/vmstat nr_free_pages 105382 nr_alloc_batch 5632 nr_inactive_anon 983455 nr_active_anon 15870487 nr_inactive_file 12904618 nr_active_file 2266184 nr_unevictable 0 nr_mlock 0 nr_anon_pages […]

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) 文档说任何节点都可以将查询redirect到正确的节点。 但我不能redirect来自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 它既不写也不读。 当我尝试从192.168.0.14:6379获得“myKey”时,它显示下一个: 127.0.0.1:6379> get myKey (nil) 我的要求有什么问题? 我正在使用redis服务器版本3.2.5

Redis(错误)需要NOAUTH身份validation

我得到的错误: (error) NOAUTH Authentication required. 在redis-cli并尝试显示KEYS * 。 我只设置了一个requirepass而不是auth afaiac。 我在redis.conf但不知道该怎么做。

如何在Ubuntu上configuration另一个redis实例?

我基本上想在Ubuntu上有两个redis实例。 我查看了/etc/init.d/redis-server脚本,并试图创build一个新的(redis-server-dev)指向另一个configuration文件(新端口等),但似乎没有工作。 什么是正确的程序? 谢谢

从Redis 2.8.19升级到3.0.1

我目前已经安装了Redis 2.8.19,但我正在升级到最新的稳定版本3.0.1。 原来我下载了,解压缩了,编译2.8.9。 如果您之前已经像我那样编译过,那么从2.8.19升级到3.0.1的build议方法是什么? 我试图find这方面的资源,但不足之处。 提前致谢。

redis安装在centos 6.5上

我正在尝试在Centos 6.5(x64)上安装Redis,其中包含以下行: yum install redis 但是我正在关注屏幕: [root@NodeJs ~]# yum install redis Loaded plugins: fastestmirror Setting up Install Process Loading mirror speeds from cached hostfile * base: nl.mirror.eurid.eu * epel: nl.mirror.eurid.eu * extras: mirror.denit.net * updates: nl.mirror.eurid.eu Resolving Dependencies –> Running transaction check —> Package redis.x86_64 0:2.8.14-2.el7 will be installed –> Processing Dependency: systemd for package: […]

node.js,mongodb,redis,关于ubuntu在生产中的性能下降,RAM是免费的,CPU 100%

正如问题标题所暗示的那样,我很难弄清楚在我的应用程序上可以改进什么(或者在os,ubuntu中进行调优)以获得可接受的性能。 但首先我要解释一下架构: 前端服务器是8核心机器,运行Ubuntu 12.04的8个内存。 该应用程序是完全用JavaScript编写的,运行在node.js v 0.8.22(因为一些模块似乎抱怨新版本的节点)我使用nginx 1.4来代理从端口80和443的httpstream量到8个受pipe理的节点工作人员并开始使用节点群集api。 我使用最新版本的socket.io 0.9.14来处理websocket连接,在这个连接上我只启用了websocket和xhr-polling作为可用的传输。 在这台机器上,我也运行一个Redis实例(2.2) 我将持久性数据(如用户和分数)存储在mongodb(3.6)上的第二台服务器上,并带有4个内存和2个内核。 这个应用程序在几个月前就开始投入使用(直到几个星期前它已经在一个盒子里运行),每天大约有18k个用户在使用它。 除了一个主要问题之外,它一直运行得非常好:性能下降。 随着使用,每个进程使用的CPU的数量增长,直到它统一工作人员(这将不再服务请求)。 我暂时解决了每分钟检查每个工作人员使用的cpu,如果达到98%,重新启动它。 所以这里的问题主要是CPU,而不是RAM。 内存不再是一个问题,因为我已经更新到socket.io 0.9.14(早期版本泄漏内存),所以我怀疑是一个内存泄漏的问题,尤其是因为现在是CPU快速增长(我必须每天重新启动每个工人10-12次!)。 在使用中的RAM也是老生常谈,但是每2-3天使用一次就很慢,奇怪的是即使我彻底重新启动整个应用程序也不会释放。 只有重新启动服务器才会被释放! 这我真的不明白… 我现在已经发现了非常棒的nodefly ,所以我终于可以看到我的生产服务器上发生了什么事情,而且我正在收集数据。 如果有人想看看我可以给你的图表,但基本上我可以看到我有80到200个并发连接! 我期待node.js处理数千个,而不是数百个请求。 另外,httpstream量的平均响应时间在500到1500毫秒之间浮动,我认为这真的是很多。 另外,在这个有1300个在线用户的时刻,这是“ss -s”的输出: Total: 5013 (kernel 5533) TCP: 8047 (estab 4788, closed 3097, orphaned 139, synrecv 0, timewait 3097/0), ports 0 Transport Total IP IPv6 * 5533 – – […]

当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实例是: “高内存超大实例17.1 GB内存,6.5 ECU(2个虚拟核心,每个3.25 EC2计算单元),420 GB本地实例存储,64位平台” 。 基本上,一旦你重新启动一个大的Redis实例,系统会变得很慢,你不能再在shell上input。 当Redis加载实例时,它使用100%的CPU(它尽可能快地加载数据)并顺序读取dump.rdb文件。 加载是CPU限制,而不是I / O限制,I / O不是特别高。 为什么地球上有两个CPU和大量RAM的盒子,没有交换磁盘上的东西,基本上应该停止工作这个工作负载? 我有一个印象,这与它是一个EC2实例有很大关系,所以与我使用的虚拟化技术有关,因为我一直加载Redis 24 GB数据集 ,没有任何问题(即使Redis的其他实例高负荷运转)。 感谢任何提示! 萨尔瓦多 编辑 :添加一些我从twitter收到的反馈: 从@ezmobius:@antirez首先要做的是从/ mnt或本地短暂的驱动器试试看,如果它的EBS flakiness,第二是要确保它不是“第一次写惩罚”(谷歌它),如果是你需要首先在磁盘的dd 0。 从@dvirsky:@antirez我正在这样ec2节点上运行许多redis实例。 我注意到bgsave有一些放缓,但不是这种现象。

提高Nginx请求/秒的技巧?

我正在构build一个分析包,项目需求说明我需要每天支持10亿次点击。 是的,“十亿” 换句话说,每秒不less于12000次点击持续,最好是有一定的破解空间。 我知道我需要多个服务器,但是我试图在“抛出更多的硬件”之前,在每个节点上获得最大的性能。 目前,我已经完成了点击跟踪部分,并进行了优化。 我几乎只是将请求直接保存到Redis中(以便以后使用Hadoop进行处理)。 该应用程序是Python / Django与网关gunicorn。 我的2GB Ubuntu 10.04 Rackspace服务器(不是生产机器)每秒可以处理大约1200个静态文件(使用Apache AB针对单个静态资产进行基准testing)。 为了比较,如果我用我的跟踪链接换出静态文件链接,我仍然每秒获得约600个请求 – 我认为这意味着我的跟踪器已经优化,因为它只比服务相同的静态资产慢2倍反复。 然而,当我以数百万次的点击为基准时,我注意到了一些事情 – 没有使用磁盘 – 这是预料之中的,因为我已经closures了所有的Nginx日志,而且我的自定义代码除了将请求详细信息保存到Redis之外什么也不做。 非固定的内存使用情况 – 据推测,由于Redis的内存pipe理,我的内存使用量将逐渐攀升,然后又回落,但从来没有成为我的瓶颈。 系统负载徘徊在2-4左右,甚至在我最重要的基准testing中,系统仍然响应,而且我仍然可以手动查看http://mysite.com/tracking/pixel ,但是我的(其他)服务器每次执行600次请求第二。 如果我进行一个简短的testing,比如说5万次点击(大概需要2米),那么我每秒钟可以获得稳定,可靠的600个请求。 如果我运行一个更长的testing(到目前为止尝试高达3.5米),我的r / s降低到大约250。 我的问题 – 一个。 它看起来像我最大的这台服务器呢? Nginx的性能堪比其他人所经历的1200 / s静态文件? 湾 对于这样的大容量应用程序是否有常见的nginx调优? 我有工作线程设置为64,gunicorn工作线程设置为8,但调整这些值似乎没有帮助或伤害我很多。 C。 有没有任何Linux级别的设置可能会限制我的传入连接? d。 什么可能导致我的性能在长时间运行的testing中降低到250r / s? 同样,在这些testing中,内存不是最大的,硬盘使用率是零。 在此先感谢,所有:) 编辑这里是我的nginxconfiguration – http://pastie.org/1450749 – 它主要是香草,脂肪明显削减。

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

我的系统使用apache2.2.15运行CentOS 6.4。 SElinux正在执行,我试图通过我的python / wsgi应用程序连接到redis的本地实例。 我得到错误13,权限被拒绝。 我可以通过命令解决这个问题: setsebool -P httpd_can_network_connect 但是,我不完全想要httpd能够连接到所有的TCP端口。 我如何指定允许哪些端口/networking连接到httpd? 如果我可以让一个模块允许httpd连接到端口6379(redis)或127.0.0.1上的任何TCP,那将是更可取的。 不知道为什么我的偏执狂是如此强大,但嘿… 有人知道吗?