添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

这是个很神奇的问题,由于测试环境和生产环境在数据量上存在差异,可能导致某个环境出现这个问题,而另外的环境没有这个问题,甚至出现某人出现这个问题,而其他人正常的情况。

  • 由于压测,给某人发放了很多卡券资源,这时这个用户查询卡券信息时又不存在分页,那会出现问题。
  • 测试环境的会员订单数据只有几百条,而生产环境有几百万条订单数据,由于没有索引,会员查询自己订单列表出现该异常。
  • 多表关联查询时,某个表没有设置合理的索引。
  • ……
  • 2020-08-12 09:44:54,947 WARN [scheduling-1] o.h.e.j.s.SqlExceptionHelper [SqlExceptionHelper.java:137] SQL Error0, SQLState: null
    2020-08-12 09:44:54,948 ERROR [scheduling-1] o.h.e.j.s.SqlExceptionHelper [SqlExceptionHelper.java:142] HikariPool-1 - Connection is not available, request timed out after 6000ms.
    Caused by: org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection
    

    可以排查的维度会有很多,最容易的方式是将Mysql的慢查询日志打开。

    查询结果数据量庞大(一次吞吐数据特别大)

    # Time: 200812  2:52:15
    # User@Host: root[root] @  [**.**.**.**]  Id:  6620
    # Query_time: 1.384438  Lock_time: 0.000079 Rows_sent: 7481  Rows_examined: 7481
    SET timestamp=1597200735;
    select * ....
    

    在慢查询日志上可以看见,这个SQL的查询时间在1.384438秒内完成,查询出7481条数据,数据量太庞大了。返回这么多数据干嘛,业务层面可以分页,或者分批次操作。

    复杂查询(慢查询)

  • 函数统计、聚合、计算相关的查询
  • 数据库表数据量过大,又没按照索引查询
  • 关联表太多,SQL不合理
  • # Query_time: 13.84438
    

    一般表现为查询时间耗时久,一直占用连接,导致资源供不应求。这时候需要优化SQL、索引、或者在业务层面避免这类查询。

    大量请求频繁访问数据库,导致连接池耗尽,后续业务无法获取到数据库连接。

  • 在数据库性能允许的情况下增加连接池链接。
  • 综合考虑数据查询实时性、重复率等等,加一些Cache来解决。
  • NoSQL是否可以帮助承载一定量压力?
  • 读写分离,多实例读。
  • 按照实际业务进行分表。
  • 《注定成为最穷的程序员…… @ 待业科技(大连)有限公司 610.2k
    粉丝