下邊是日志,發現到準備sql時卡了16分鐘。
uj5u.com熱心網友回復:
在代碼的前和后 加上輸出時間耗費的陳述句,看看是哪一行代碼耗費了16分鐘。話說 16分鐘。。。。。。
uj5u.com熱心網友回復:
還是上相關代碼吧結果集有多少行
uj5u.com熱心網友回復:
public List<String> getRoleByUserxh(String userxh) {
logger.debug("[+]getRoleByUserxh userxh={}",userxh);
SPUserRoleExample example1 = new SPUserRoleExample();
example1.createCriteria().andUserxhEqualTo(userxh);
List<SPUserRole> list2 = userRoleMapper.selectByExample(example1);
List<String> rolecodes = new ArrayList<String>();
for(SPUserRole uo : list2){
rolecodes.add(uo.getRolecode());
}
logger.debug("[+]getRoleByUserxh rolecodes={}",JsonUtil.getJsonString(rolecodes));
return rolecodes;
}
uj5u.com熱心網友回復:
結果集6條
uj5u.com熱心網友回復:
你圈的兩個log記錄不是一個程序中的吧。至少不是Preparing
Preparing只用了1ms,就是你圈的第二條和后面一條
uj5u.com熱心網友回復:
連接時在進入service的時候拿到的。把連接池的配置貼上來。
進入service:OrgService.getRoleByUserxh()到查詢發出前的業務代碼貼上來,是這塊比較慢。
uj5u.com熱心網友回復:
是一個,同一個執行緒號。
uj5u.com熱心網友回復:
連接池配置
<bean id="ds_org" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="https://bbs.csdn.net/topics/${jdbc_url_org}" />
<property name="username" value="https://bbs.csdn.net/topics/${jdbc_username_org}" />
<property name="password" value="https://bbs.csdn.net/topics/${jdbc_password_org}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="https://bbs.csdn.net/topics/30" />
<property name="minIdle" value="https://bbs.csdn.net/topics/30" />
<property name="maxActive" value="https://bbs.csdn.net/topics/200" />
<!-- 獲取連接最大等待時間 -->
<property name="maxWait" value="https://bbs.csdn.net/topics/60000" />
<!-- 打開PSCache,并且指定每個連接上PSCache的大小 -->
<property name="poolPreparedStatements" value="https://bbs.csdn.net/topics/true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="https://bbs.csdn.net/topics/20" />
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="https://bbs.csdn.net/topics/60000" />
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="https://bbs.csdn.net/topics/300000" />
<!-- 資料庫連接測驗 -->
<property name="validationQuery" value="https://bbs.csdn.net/topics/SELECT 'x' FROM DUAL" />
<property name="testOnBorrow" value="https://bbs.csdn.net/topics/false" />
<property name="testOnReturn" value="https://bbs.csdn.net/topics/false" />
<property name="testWhileIdle" value="https://bbs.csdn.net/topics/true" />
<!-- 打開removeAbandoned功能 -->
<property name="removeAbandoned" value="https://bbs.csdn.net/topics/true" />
<!-- 600秒,也就是10分鐘 -->
<property name="removeAbandonedTimeout" value="https://bbs.csdn.net/topics/600" />
<!-- 關閉abanded連接時輸出錯誤日志 -->
<property name="logAbandoned" value="https://bbs.csdn.net/topics/true" />
<!-- 監控資料庫 -->
<!-- <property name="filters" value="https://bbs.csdn.net/topics/stat" /> -->
<property name="filters" value="https://bbs.csdn.net/topics/mergeStat" />
<!-- Druid連接池自定義資料庫密碼加解密 -->
<property name="passwordCallback" ref="dborgPasswordCallback"/>
<property name="proxyFilters">
<list>
<ref bean="statOrgFilter"/>
</list>
</property>
</bean>
uj5u.com熱心網友回復:
這個是OrgService里執行的方法,他之前沒慢,圈紅的第一條的時間就是這個方法的第一行。
public List<String> getRoleByUserxh(String userxh) {
logger.debug("[+]getRoleByUserxh userxh={}",userxh);
SPUserRoleExample example1 = new SPUserRoleExample();
example1.createCriteria().andUserxhEqualTo(userxh);
List<SPUserRole> list2 = userRoleMapper.selectByExample(example1);
List<String> rolecodes = new ArrayList<String>();
for(SPUserRole uo : list2){
rolecodes.add(uo.getRolecode());
}
logger.debug("[+]getRoleByUserxh rolecodes={}",JsonUtil.getJsonString(rolecodes));
return rolecodes;
}
uj5u.com熱心網友回復:
看不出什么問題,如果service沒有配置AOP的其他業務的話,應該是獲取連接的時候比較慢,druid是提供強大的監控功能吧?把監控打開看一下連接池有沒有例外。uj5u.com熱心網友回復:
分明是查詢時耗費了16分鐘,所以應該是拿到了。16分鐘啊......
uj5u.com熱心網友回復:
你先分析一下你的sql 執行時間多少uj5u.com熱心網友回復:
資料表索引?uj5u.com熱心網友回復:
索引有的,而且查詢速度特別快,問題不在sql
uj5u.com熱心網友回復:
我想問一下,你那個紅色的數字,是如何做到自定義配置的。我目前也需要實作這個需求轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114675.html
標籤:Web 開發
下一篇:小白有個問題求解答
