蒙哥表演

 癫逼 发布于 2023-02-08 11:13

我们的测试工具创建n个线程,并在每个线程内执行m次迭代。我们计算最小,平均和最大操作时间。因此,我们会不时看到mongo执行请求的速度非常慢-长达几秒钟。同样,每次首次操作最慢时,我们甚至有意将其从统计数据中排除,而avg和max之间的差异仍然很大。正常吗 我可以消除那些缓慢的操作吗?为什么mongo执行某些请求的速度如此之慢?

下面是我们同时运行插入/获取/删除/更新测试时的单操作模式和混合模式的结果。在混合模式下,thread = 1表示我们为每种测试类型创建了4个线程

我们使用默认值-每个主机100个连接

资源

public void storeMt(MyTestObject myTestObject) {
    mongoTemplate.insert(myTestObject );
  }

  public MyTestObject getMt(long id) {
    MyTestObject result = mongoTemplate.findById(id, MyTestObject.class);
    return result;
  }


@Document
public class MyTestObject implements Serializable {

  private static final long serialVersionUID = 1L;
  @Id
  private long id;
//class contains 20+ fields
.......

小智.. 5

我看不出为什么会发生这种情况。

    这不是由于mongoDB,可能是由于Java进程。开始并在内存中加载(分配内存)相关变量需要花费一些时间。

    使用MMS(MongoDB的监视工具)来查看数据库是否为瓶颈。您可以检查数据库锁,网络使用率,内存使用率。

    MongoDB获取当前版本的数据库级别的锁定。因此,如果您的查询命中相同的数据库(单个数据库的不同或相同集合),则可能会减慢操作速度。

    另外,添加更多线程并不一定会提高性能。由于CPU,内存(RAM)等上的额外负载,它可能会降低性能。因此,我建议在频繁间隔后增加线程数,然后查看性能何时停止改善。

我敢肯定,如果您这样做,您将找出速度变慢的确切原因。

干杯!

1 个回答
  • 我看不出为什么会发生这种情况。

      这不是由于mongoDB,可能是由于Java进程。开始并在内存中加载(分配内存)相关变量需要花费一些时间。

      使用MMS(MongoDB的监视工具)来查看数据库是否为瓶颈。您可以检查数据库锁,网络使用率,内存使用率。

      MongoDB获取当前版本的数据库级别的锁定。因此,如果您的查询命中相同的数据库(单个数据库的不同或相同集合),则可能会减慢操作速度。

      另外,添加更多线程并不一定会提高性能。由于CPU,内存(RAM)等上的额外负载,它可能会降低性能。因此,我建议在频繁间隔后增加线程数,然后查看性能何时停止改善。

    我敢肯定,如果您这样做,您将找出速度变慢的确切原因。

    干杯!

    2023-02-08 11:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有