【Druid】DruidはSSMプロジェクトの性能を監視する-構成と実例


原文へようこそ:【Druid】DruidはSSMプロジェクトの性能を監視する-構成と実例
紹介する
以前はプロジェクトをしていたときもdruidパフォーマンスモニタリングを構成していませんでしたが、ユーザーが増えるにつれて、サイトのアクセスが遅くなったり、どこがパフォーマンスの問題に遭遇したのかを知りたいと思って、方法やsqlを最適化し、インデックスのインデックスを追加し、そのキャッシュのキャッシュを行いました.
Druidはアリババのオープンソースプラットフォーム上のデータベース接続プールで実現されています(ネット上では現在javaで最も良い接続プールだと言われています).Druidはまた、強力な監視と拡張機能を提供します.Druidはオープンソースプロジェクトで、githubにソースコードが管理されています.ソースコード倉庫のアドレスは次のとおりです.https://github.com/alibaba/druid
精度を方法レベルで監視することができ、どの方法で、どのsql文に最も多くの時間を費やし、的確な最適化を行うことができます.
maven構成druid


    com.alibaba
    druid
    1.1.0

Maven倉庫の住所で、別のバージョンを自分で設定します.http://www.mvnrepository.com/artifact/com.alibaba/druid
Druidのモニタ統計を開く
Springのプロファイルで、データソースの構成
...
    
    "dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close"
          p:driverClassName="${driverClassName}"
          p:url="${jdbc_url}"
          p:username="${jdbc_username}"
          p:password="${jdbc_password}"
          p:initialSize="${jdbc_init}"
          p:minIdle="${jdbc_minIdle}"
          p:maxActive="${jdbc_maxActive}"
          p:filters="${druid_filters}"
    >
    
...

p:filters構成値:stat,wall,log 4 jモニタリング統計用のfilter:statログ用のfilter:log 4 j防御sql注入のfilter:wall自分で構成を選択でき、複数の構成間を英語のカンマで区切ることができます
Web.xml追加構成
...

    
    
    
        DruidStatView
        com.alibaba.druid.support.http.StatViewServlet
        
             
            
        
            
        
        
            
            loginUsername
            root
        
        
            
            loginPassword
            chenhaoxiang
        
    
    
        DruidStatView
        /druid/*
    
    
...

ユーザー名とパスワードを設定したり、ホワイトリストを構成したりできます.ユーザー名パスワードを設定しないと、誰でもアクセスできます.
アクセス方法
アクセス先:http://127.0.0.1:8080/プロジェクト名/druid/index.html
アカウントのパスワードを入力してログインした後
アクセスhttp://localhost:8080/insert?name=chx データを挿入すると、sql文が実行するパフォーマンスが表示されます.
SQL実行時間分布
例えば、あるSQLは1000回実行され、そのうち0~1ミリ秒区間50回、1~10ミリ秒800回、10~100ミリ秒100回、100~1000ミリ秒30回、1~10秒15回、10秒以上5回である.消費時間区間分布により、SQLの実行にかかる時間をよく知ることができます
データソースとSQLモニタ、SQLファイアウォール、Webアプリケーション、URLモニタ、Sessionモニタ、Springモニタが開いていません
URLモニタ、Sessionモニタ、Webアプリケーションを開く
Web.xmlでの構成
    
    
        DruidWebStatFilter
        com.alibaba.druid.support.http.WebStatFilter
        
            exclusions
            
            *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
        
        
            profileEnable
            true
        
    
    
        DruidWebStatFilter
        /*
    
    

Springモニタをオンにする
Springプロジェクトである以上、SpringのBeanやspringのAOP特性と組み合わせてコードの実行効果を監視する必要があります.druidはメソッドレベルの監視を行うことができます.この機能は、メソッドの呼び出し頻度とメソッドの実行時間を発見し、タイムリーに調整と修正を行い、プロジェクトをより丈夫にすることができます.
スプリングプロファイル
...

    
    
    
    "druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor" />
    "druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
        "patterns">
            
                
                com.uifuture.user.service.*
                com.uifuture.user.dao.*
            
        
    
    
    "true"/>
    
        "druid-stat-interceptor"
                     pointcut-ref="druid-stat-pointcut" />
        
    
    
...

SQLスロークエリのログの設定
SQLモニタリングでは、sqlの実行が最も遅い実行時間に関する統計がありますが、sql文の実行が最も遅い実行時間レコードは1つの値しかありません.時間がある時間を超えるsql文のログ出力を実行でき、パフォーマンスの最適化が容易になります.
Springプロファイル追加ブロック
データ・ソースの構成を変更するには、次の手順に従います.
    
    "dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close"
          p:driverClassName="${driverClassName}"
          p:url="${jdbc_url}"
          p:username="${jdbc_username}"
          p:password="${jdbc_password}"
          p:initialSize="${jdbc_init}"
          p:minIdle="${jdbc_minIdle}"
          p:maxActive="${jdbc_maxActive}"
          p:filters="${druid_filters}"
    >
        "proxyFilters">
            
                "stat-filter" />
                "log-filter" />
            
        
    

遅いsql時間とログブロックの構成
    
    "stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
        
        "slowSqlMillis" value="1000"/>
        "logSlowSql" value="true"/>
    
    "log-filter" class="com.alibaba.druid.filter.logging.Log4jFilter">
        "dataSourceLogEnabled" value="true" />
        "statementExecutableSqlLogEnable" value="true" />
    
    

ここでは、ローカルで行っているので、データ量が少ないので、テストを容易にするために5 msに設定します.
log 4 jプロファイルを変更し、遅いsqlログの出力ポリシーを追加
#####     
log4j.rootLogger=INFO,console,file,error,druid
...

# Druid        
log4j.logger.druid.sql=WARN,druid
log4j.logger.druid.sql.DataSource=WARN,druid
log4j.logger.druid.sql.Connection=WARN,druid
log4j.logger.druid.sql.Statement=WARN,druid

log4j.appender.druid=org.apache.log4j.DailyRollingFileAppender
log4j.appender.druid.layout=org.apache.log4j.PatternLayout
log4j.appender.druid.layout.ConversionPattern= [%p] %d{yyyy-MM-dd HH\:mm\:ss} [%l] -> %m [%t] [chx]%n
log4j.appender.druid.datePattern='.'yyyy-MM-dd
log4j.appender.druid.Threshold = WARN
log4j.appender.druid.append=true
log4j.appender.druid.File=${catalina.home}/logs/druid_spring_config/druid-slow-sql.log
# ${catalina.home}  tomcat    

遅いsqlが設定されている時間は5ミリ秒より大きいため、実行時間が5ミリ秒より大きい場合は赤色でマークされます.
ログファイルを見てください:クエリーの遅いsqlを印刷しました.
使用中に他の解決できないdruidの問題に遭遇したり、別のものを構成したい場合は、次のアドレスにアクセスしてください.公式のドキュメントはここにあります.https://github.com/alibaba/druid/wiki/よくある質問
最後に、この小さなテストdruidの項目をアップロードしました.ソースが必要な方はダウンロードしてみてください
プロジェクトのアドレス:
GITHUBソースアドレス:
【私を訪問します】
この文章は[記憶に精通している]から作成され、すべての権利が保持されている.転載を歓迎して、分かち合うのは進歩の源泉です.
転載は出典を明記してください.http://chenhaoxiang.cn/2018/02/06/2255/本文は【記憶に詳しいブログ】から