我的springboot + mybatis服务非常慢,我分析了日志并发现:
[DEBUG 2018-06-11 15:30:06.295] [http-nio-9973-exec-1] logid:102789834531274752 org.mybatis.spring.SqlSessionUtils.getSqlSession(SqlSessionUtils.java:97) [Creating a new SqlSession]
[DEBUG 2018-06-11 15:30:06.296] [http-nio-9973-exec-1] logid:102789834531274752 org.mybatis.spring.SqlSessionUtils.registerSessionHolder(SqlSessionUtils.java:148) [SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@584909b4] was not registered for synchronization because synchronization is not active]
[DEBUG 2018-06-11 15:30:17.997] [http-nio-9973-exec-1] logid:102789834531274752 org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:87) [JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@1ebfd05a] will not be managed by Spring]
[DEBUG 2018-06-11 15:30:17.998] [http-nio-9973-exec-1] logid:102789834531274752 org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) [==> Preparing: SELECT `id`,`name`,`sales_group_id`,`advertiser_id`,`agent_id`,`industry_id`,`contract_id`,`cast_system_id`,`traffic_category_id`,`distinct_type_id`,`dsp_id`,`dsp_name`,`push_ratio`,`executor_name`,`direct_sales_name`,`agent_sales_name`,`description`,`region_id`,`customer_type_id`,`creator_id`,`creator_name`,`create_time`,`update_time`,`audit_status_id`,`run_status_id`,`version`,`begin_date`,`end_date`,`cipdx`,`progress` FROM campaign_info WHERE id = ? ]
[DEBUG 2018-06-11 15:30:17.998] [http-nio-9973-exec-1] logid:102789834531274752 org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) [==> Parameters: 1(Integer)]
[DEBUG 2018-06-11 15:30:19.107] [http-nio-9973-exec-1] logid:102789834531274752 org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) [<== Total: 0]
[DEBUG 2018-06-11 15:30:19.107] [http-nio-9973-exec-1] logid:102789834531274752 org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:191) [Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@584909b4]]org.mybatis.spring.SqlSessionUtils.getSqlSession和org.mybatis.spring.transaction.SpringManagedTransaction.openConnection之间有大约10秒的差距,那么发生了什么呢?是我的mysql太慢了吗?或者我的spring服务出了什么问题?
发布于 2018-06-12 06:41:29
主要的疑点是打开到数据库的连接,因为当时正在发生这种情况。
您正在使用连接池,所以很可能池中的所有连接都很忙,而这个特定的客户端一直在等待,直到某些连接返回到池中。
要检查是否属于这种情况,您可以查看连接池文档,了解如何启用连接何时借用/返回到池的日志记录,或者为org.springframework.jdbc.datasource.DataSourceUtils记录器启用DEBUG日志记录。
另一个可能的原因是打开连接很慢。您可以使用一些使用jdbc直接连接到数据库的简单程序(如this)来检查这一点。
https://stackoverflow.com/questions/50793391
复制相似问题