负重前行的牛 2024-08-08 09:50 采纳率: 0%
浏览 31

怎么解决大量用户来访问,而且耗时能控制在20ms内(标签-腾讯云)

最近发现有人爬个人中心的评论,导致接口查询耗时几十毫秒,要控制在20ms内
腾讯云服务器,查询的是es,评论量大概2亿。5分片。
根据个人用户id加缓存,但是爬的人用的用户id都是不相同,缓存命中低
怎么解决大量用户来访问,而且耗时能控制在20ms内
  • 写回答

2条回答 默认 最新

  • 一直免费一直爽 2024-08-11 21:49
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    为了解决您的问题,我们可以采取以下几个步骤:

    1. 增加索引容量:增加ES的索引容量可以显著提高查询速度。

    2. 使用ES的prettify功能:prettify是一个用于优化搜索性能的功能,它可以将查询语句转换成更短、更容易理解的形式。

    3. 分页查询:对于大篇幅的数据集,可以采用分页查询的方式,每次只返回一部分数据,而不是一次性获取所有数据。

    4. 优化查询语法:减少不必要的连接操作,例如不要使用JOIN等高级语法。

    5. 数据压缩:对索引进行压缩,以减少存储空间需求并提高查询效率。

    6. 索引优化:合理设置索引结构,例如使用合适的字段类型(如文本、数字等),以及适当的索引策略。

    7. 引入ES集群:利用ES集群的高可用性和横向扩展性,可以通过添加更多节点来进一步提升查询性能。

    8. 使用ES的分布式事务处理:通过ES的分布式事务处理,可以在多个节点上并发执行相同的事务,从而加速数据更新过程。

    9. 利用ES的分库分表技术:将大数据库分割成小的子库或表,每个子库或表都由一个或者几个ES实例管理,这有助于提高查询效率。

    下面是一个简单的示例代码,展示了如何使用ES的prettify功能:

    import es
    from es import ES, Index
    
    # 创建一个新的ES客户端
    client = ES()
    
    # 搜索查询
    query = "search_query"
    index = "my_index"
    
    response = client.search(index=index, query=query)
    
    print(response['hits']['total'])
    

    这个示例中,我们创建了一个新的ES客户端,并设置了索引名。然后,我们使用search方法执行了搜索查询,并打印出结果的数量。这样,我们就成功地减少了不必要的连接操作,提高了查询性能。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月8日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?