keycloak
公開メンバ関数 | 限定公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.connections.jpa.HibernateStatsReporter クラス
org.keycloak.connections.jpa.HibernateStatsReporter の継承関係図
Inheritance graph
org.keycloak.connections.jpa.HibernateStatsReporter 連携図
Collaboration graph

公開メンバ関数

 HibernateStatsReporter (EntityManagerFactory emf)
 
void run (KeycloakSession session)
 

限定公開メンバ関数

void logStats (Statistics stats)
 
void logEntities (StringBuilder builder, String lineSep, Statistics stats)
 
void logCollections (StringBuilder builder, String lineSep, Statistics stats)
 
void logQueries (StringBuilder builder, String lineSep, Statistics stats)
 

非公開変数類

final EntityManagerFactory emf
 

静的非公開変数類

static final int LIMIT = 100
 
static final Logger logger = Logger.getLogger(HibernateStatsReporter.class)
 

詳解

著者
Marek Posolda

構築子と解体子

◆ HibernateStatsReporter()

org.keycloak.connections.jpa.HibernateStatsReporter.HibernateStatsReporter ( EntityManagerFactory  emf)
inline
42  {
43  this.emf = emf;
44  }
final EntityManagerFactory emf
Definition: HibernateStatsReporter.java:39

関数詳解

◆ logCollections()

void org.keycloak.connections.jpa.HibernateStatsReporter.logCollections ( StringBuilder  builder,
String  lineSep,
Statistics  stats 
)
inlineprotected
88  {
89  builder.append("Important collections statistics: ").append(lineSep);
90  for (String col : stats.getCollectionRoleNames()) {
91  CollectionStatistics collectionStats = stats.getCollectionStatistics(col);
92  if (collectionStats.getRecreateCount() > LIMIT || collectionStats.getUpdateCount() > LIMIT || collectionStats.getRemoveCount() > LIMIT ||
93  collectionStats.getLoadCount() > LIMIT || collectionStats.getFetchCount() > LIMIT) {
94  builder.append(col + " - ")
95  .append("recreated: " + collectionStats.getRecreateCount())
96  .append(", updated: " + collectionStats.getUpdateCount())
97  .append(", removed: " + collectionStats.getRemoveCount())
98  .append(", loaded: " + collectionStats.getLoadCount())
99  .append(", fetched: " + collectionStats.getFetchCount())
100  .append(lineSep);
101  }
102  }
103  builder.append(lineSep);
104  }
static final int LIMIT
Definition: HibernateStatsReporter.java:37

◆ logEntities()

void org.keycloak.connections.jpa.HibernateStatsReporter.logEntities ( StringBuilder  builder,
String  lineSep,
Statistics  stats 
)
inlineprotected
70  {
71  builder.append("Important entities statistics: ").append(lineSep);
72  for (String entity : stats.getEntityNames()) {
73  EntityStatistics entityStats = stats.getEntityStatistics(entity);
74  if (entityStats.getInsertCount() > LIMIT || entityStats.getDeleteCount() > LIMIT || entityStats.getUpdateCount() > LIMIT || entityStats.getLoadCount() > LIMIT || entityStats.getFetchCount() > LIMIT) {
75  builder.append(entity + " - ")
76  .append("inserted: " + entityStats.getInsertCount())
77  .append(", updated: " + entityStats.getUpdateCount())
78  .append(", removed: " + entityStats.getDeleteCount())
79  .append(", loaded: " + entityStats.getLoadCount())
80  .append(", fetched: " + entityStats.getFetchCount())
81  .append(lineSep);
82  }
83  }
84  builder.append(lineSep);
85  }
static final int LIMIT
Definition: HibernateStatsReporter.java:37

◆ logQueries()

void org.keycloak.connections.jpa.HibernateStatsReporter.logQueries ( StringBuilder  builder,
String  lineSep,
Statistics  stats 
)
inlineprotected
107  {
108  builder.append("Important queries statistics: ").append(lineSep).append(lineSep);
109  for (String query : stats.getQueries()) {
110  QueryStatistics queryStats = stats.getQueryStatistics(query);
111 
112  if (queryStats.getExecutionCount() > LIMIT || (queryStats.getExecutionCount() * queryStats.getExecutionAvgTime() > LIMIT)) {
113  builder.append(query).append(lineSep)
114  .append("executionCount=" + queryStats.getExecutionCount()).append(lineSep)
115  .append("executionAvgTime=" + queryStats.getExecutionAvgTime()).append(" ms").append(lineSep)
116  .append(lineSep)
117  .append(lineSep);
118  }
119  }
120  }
static final int LIMIT
Definition: HibernateStatsReporter.java:37

◆ logStats()

void org.keycloak.connections.jpa.HibernateStatsReporter.logStats ( Statistics  stats)
inlineprotected
58  {
59  String lineSep = System.getProperty("line.separator");
60  StringBuilder builder = new StringBuilder(lineSep).append(stats.toString()).append(lineSep).append(lineSep);
61 
62  logEntities(builder, lineSep, stats);
63  logCollections(builder, lineSep, stats);
64  logQueries(builder, lineSep, stats);
65 
66  logger.infof(builder.toString());
67  }
void logCollections(StringBuilder builder, String lineSep, Statistics stats)
Definition: HibernateStatsReporter.java:88
void logEntities(StringBuilder builder, String lineSep, Statistics stats)
Definition: HibernateStatsReporter.java:70
static final Logger logger
Definition: HibernateStatsReporter.java:40
void logQueries(StringBuilder builder, String lineSep, Statistics stats)
Definition: HibernateStatsReporter.java:107

◆ run()

void org.keycloak.connections.jpa.HibernateStatsReporter.run ( KeycloakSession  session)
inline

org.keycloak.timer.ScheduledTaskを実装しています。

48  {
49  SessionFactory sessionFactory = ((EntityManagerFactoryImpl) emf).getSessionFactory();
50  Statistics stats = sessionFactory.getStatistics();
51 
52  logStats(stats);
53 
54  stats.clear(); // For now, clear stats after each iteration
55  }
void logStats(Statistics stats)
Definition: HibernateStatsReporter.java:58
final EntityManagerFactory emf
Definition: HibernateStatsReporter.java:39

メンバ詳解

◆ emf

final EntityManagerFactory org.keycloak.connections.jpa.HibernateStatsReporter.emf
private

◆ LIMIT

final int org.keycloak.connections.jpa.HibernateStatsReporter.LIMIT = 100
staticprivate

◆ logger

final Logger org.keycloak.connections.jpa.HibernateStatsReporter.logger = Logger.getLogger(HibernateStatsReporter.class)
staticprivate

このクラス詳解は次のファイルから抽出されました: