Amazon ec2 redis服务器的最佳EC2设置
我们正在部署一个只使用redis作为数据存储的大规模web应用程序。我注意到,在EC2上,我们的redis主机的基准大约是每秒8000个事务,远远低于专用硬件上的基准 我知道在像EC2这样的虚拟机上运行Redis会带来性能损失,但我希望在EC2上的生产环境中部署Redis的人能给我一些建议,告诉我什么样的EC2设置最能让Redis发挥更大的作用Amazon ec2 redis服务器的最佳EC2设置,amazon-ec2,redis,Amazon Ec2,Redis,我们正在部署一个只使用redis作为数据存储的大规模web应用程序。我注意到,在EC2上,我们的redis主机的基准大约是每秒8000个事务,远远低于专用硬件上的基准 我知道在像EC2这样的虚拟机上运行Redis会带来性能损失,但我希望在EC2上的生产环境中部署Redis的人能给我一些建议,告诉我什么样的EC2设置最能让Redis发挥更大的作用 谢谢。EC2可能不是在虚拟化硬件上运行Redis的最佳环境,但它是一种流行的环境,要在这个平台上从Redis中获得最佳效果,有很多要点需要了解 我是本书
谢谢。EC2可能不是在虚拟化硬件上运行Redis的最佳环境,但它是一种流行的环境,要在这个平台上从Redis中获得最佳效果,有很多要点需要了解 我是本书的作者之一,本书涵盖了我在下面介绍的大部分主题。这只是要点的总结 虚拟化收费 它并不特定于EC2,但Redis在VM上运行时速度要慢得多(就支持的最大吞吐量而言)。这是因为对于基本操作,Redis不会给处理客户端连接(如memcached或其他有效的键/值存储)所需的epoll/读/写系统调用增加太多开销。在VM上,系统调用通常更昂贵,并且它们代表了Redis活动的重要部分(尤其是在基准测试中)。在这种情况下,与裸机相比,最大吞吐量减少50%的情况并不少见 当然,这也取决于虚拟机监控程序的质量。对于EC2,使用Xen 良好条件下的基准测试 基准测试可能很棘手,尤其是在EC2这样的平台上。有一点经常被忘记,那就是确保对基准客户机和服务器进行正确的配置。例如,在针对您的redis服务器时,不要在CPU不足的微实例(可能会被Amazon限制)上运行redis基准测试。这两台机器对于获得良好的最大吞吐量同样重要 实际上,要评估Redis的性能,您需要:
- 在本地运行redis benchmark(与服务器在同一台机器上),假设您有多个vCPU核心
- 在QoS配置相当于服务器机器的机器上远程运行redis benchmark(从不同的VM)
那么,如果内存要求很高,并且应用程序可以容忍它,请考虑在同一台机器上运行几个较小的ReDIS实例,并将数据碎片化。它可以将fork操作导致的延迟降低到可接受的水平
持久性配置 这是从Redis(在虚拟机和裸机上)获得良好性能的一个关键点。所以请花时间仔细阅读 如果您使用RDB,请记住,一旦退出保存后台进程,写时内存复制机制将开始复制页面。所以你需要确保Redis本身有足够的内存,再加上一些余量来应对COW。额外内存的大小取决于您的工作负载。在实例中写的越多,需要的额外内存就越多 请注意,写入文件也可能会消耗一些内存(因为文件系统缓存),因此在Redis后台保存期间,您需要考虑Redis内存、COW开销和转储文件的大小 运行Redis服务器的机器决不能交换。如果真是这样,结果将是灾难性的。与其他一些商店不同,Redis对虚拟内存不友好 对于Linux,请确保设置合理的系统参数:vm.overmit_memory=1和vm.swappiness=0(或者是非常低的值)。不要使用旧的内核版本:它们在强制低交换性方面非常糟糕(在写入大文件时导致交换) 如果使用AOF,请查看fsync选项。这是写操作的原始性能和持久性之间的折衷。你需要做出选择并定义一个策略 您还需要熟悉EC2存储选项。在某些VM上,您可以在临时存储和EBS之间进行选择。在其他一些情况下,您只有EBS 临时存储通常更快,并且您可能会遇到比EBS更少的问题,但在磁盘故障或主机重新启动等情况下,您可以轻松地释放数据。。。您可以想象将RDB快照放在临时存储上,然后将生成的文件复制到EBS目录,作为性能和健壮性之间的权衡 EBS是远程存储:它可能消耗分配给VM的标准网络带宽,并影响Redis的最大吞吐量。如果您计划使用EBS,考虑选择“EBS优化”选项来在标准网络和存储链路之间建立QoS。 最后,EC2对性能要求很高的实例的一种常见设置是在主实例上停用持久性,而只在从实例上激活持久性。数据可能不太安全,但可能