首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs + Redis在Azure上的性能

Nodejs + Redis在Azure上的性能
EN

Stack Overflow用户
提问于 2021-10-12 20:50:20
回答 1查看 135关注 0票数 0

我们有一个nodejs应用程序位于Azure上,使用Redis缓存来自各种外部端点的数据,这样我们就不会不必要地耗尽API限制,并保持页面渲染速度很快,尽管有些端点非常慢。

随着应用程序的扩展,我们开始遇到一些Redis性能方面的问题。我在get setex调用周围设置了一些日志记录,以跟踪响应时间,在某些情况下,每个调用的响应时间可以超过500ms。然而,根据Azure仪表板,redis服务器负载是正常的。

作为一点背景知识,该应用程序托管在3个区域,每个区域都有应用程序服务和redis缓存。每个地域最多支持20个app服务主机。redis缓存之间没有交叉通信,因为不要求数据跨区域同步,并允许整个区域下降而不损失服务。我们为每个正在运行的进程创建一个单独的redis客户端,该客户端是共享的。

我们运行nodejs 14并使用ioredis 4.27.6,我们的配置是

代码语言:javascript
复制
const client = new Redis({
  port,
  host: server,
  password: auth,
  maxRetriesPerRequest: 2,
  tls: {},
  enableAutoPipelining: true,
  enableOfflineQueue: true,
  connectTimeout: 30000,
});

慢速日志记录的一个例子

代码语言:javascript
复制
2021-10-10T09:10:53.369997968Z warn: redis slow redis {
2021-10-10T09:10:53.370045469Z   "command": "setex",
2021-10-10T09:10:53.370053669Z   "diffMs": 611,
2021-10-10T09:10:53.370065369Z   "key": "getRolloutValue(product_over)"
2021-10-10T09:10:53.370070169Z }
2021-10-10T09:10:53.376250740Z warn: redis slow redis {
2021-10-10T09:10:53.376285841Z   "command": "get",
2021-10-10T09:10:53.376293841Z   "diffMs": 487,
2021-10-10T09:10:53.376303141Z   "key": "getDataForProduct(enus, XXXX)",
2021-10-10T09:10:53.376328241Z   "sizeStr": "8.93 KB"
2021-10-10T09:10:53.376332641Z }
2021-10-10T09:10:53.377994061Z warn: redis slow redis {
2021-10-10T09:10:53.378021261Z   "command": "get",
2021-10-10T09:10:53.378028661Z   "diffMs": 488,
2021-10-10T09:10:53.378037261Z   "key": "getDataForProduct(enus, XXXX)",
2021-10-10T09:10:53.378045661Z   "sizeStr": "5.45 KB"
2021-10-10T09:10:53.378049961Z }

有没有人体验过这种情况,或者对我们如何提高性能的配置有什么建议?

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2021-10-15 07:11:45

我猜慢的原因不是redis自己,而是操作系统上下文切换,cpu被其他进程占用了。您可以尝试在一个隔离的环境中运行redis,而不需要任何其他应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69546866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档