http://jira.hyperic.com/browse/HHQ-4191
Here is a sample of all the counts of methods calling getConnection() in different areas of our app by just browsing around a couple pages in the ui after startup (I filtered some of the bigger ones which aren't associated with the UI)
This is caused by objects outside the spring container calling @Transactional beans inside the spring container. getConnection() is just a part of the entire overhead as each of these calls have a lot of hidden calls due to aop.
If we could bundle up the calls so that everything occurs inside the spring container, we'd be much better off from a performance perspective.
123 org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164)
18 org.hyperic.hq.ui.server.session.UIPluginDeployer$1.fileAdded(UIPluginDeployer.java:79)
15 org.hyperic.hq.ui.servlet.AvailabilityBaseServlet.doGet(AvailabilityBaseServlet.java:114)
15 <unknown>
10 org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.setAutoCommit(AttributeRestoringConnectionInvocationHandler.java:83)
9 org.hyperic.hq.events.server.session.HQDBHealthChecker$HQDBHealthTask.run(HQDBHealthChecker.java:111)
7 org.hyperic.hq.ui.taglib.HelpTag.doStartTag(HelpTag.java:66)
5 org.hyperic.hq.ui.taglib.RecentAlertsTag.doStartTag(RecentAlertsTag.java:141)
5 org.hyperic.hq.ui.taglib.RecentAlertsTag.doStartTag(RecentAlertsTag.java:131)
4 org.hyperic.hq.ui.action.resource.common.monitor.visibility.IndicatorChartsAction.getMetrics(IndicatorChartsAction.java:154)
4 org.hyperic.hq.ui.action.resource.common.monitor.visibility.IndicatorChartsAction.getMetrics(IndicatorChartsAction.java:138)
4 org.hyperic.hq.ui.action.portlet.recentresources.ViewAction.getStuff(ViewAction.java:110)
4 org.hyperic.hq.ui.action.common.HeaderAction.execute(HeaderAction.java:66)
4 org.hyperic.hq.events.server.session.AlertRegulatorImpl.alertsAllowed(AlertRegulatorImpl.java:49)
2 org.hyperic.hq.ui.util.DashboardUtils.findUserDashboardConfig(DashboardUtils.java:365)
2 org.hyperic.hq.ui.taglib.UserResourcePermission.doStartTag(UserResourcePermission.java:72)
2 org.hyperic.hq.ui.taglib.ResourceBreadcrumbTag.processBreadcrumb(ResourceBreadcrumbTag.java:158)
2 org.hyperic.hq.ui.taglib.NavMapTag._getResourceTree(NavMapTag.java:291)
2 org.hyperic.hq.ui.service.RESTService.loadDashboardConfig(RESTService.java:773)
2 org.hyperic.hq.ui.service.RESTService.getAuthzSubject(RESTService.java:756)
2 org.hyperic.hq.ui.action.resource.service.monitor.VisibilityPortalAction.findServersHealths(VisibilityPortalAction.java:130)
2 org.hyperic.hq.ui.action.resource.service.monitor.VisibilityPortalAction.findServersHealths(VisibilityPortalAction.java:129)
2 org.hyperic.hq.ui.action.resource.service.monitor.VisibilityPortalAction.findServersHealths(VisibilityPortalAction.java:124)
2 org.hyperic.hq.ui.action.resource.ResourceController.setResource(ResourceController.java:157)
2 org.hyperic.hq.ui.action.resource.ResourceController.setResource(ResourceController.java:145)
2 org.hyperic.hq.ui.action.resource.ResourceController.setResource(ResourceController.java:129)
2 org.hyperic.hq.ui.action.resource.ResourceController.setResource(ResourceController.java:126)
2 org.hyperic.hq.ui.action.resource.ResourceController.setResource(ResourceController.java:123)
2 org.hyperic.hq.ui.action.resource.common.QuickFavoritesPrepareAction.workflow(QuickFavoritesPrepareAction.java:83)
2 org.hyperic.hq.ui.action.resource.common.monitor.visibility.TimelineAction.execute(TimelineAction.java:88)
2 org.hyperic.hq.ui.action.resource.common.monitor.visibility.ListVirtualsAction.execute(ListVirtualsAction.java:81)
2 org.hyperic.hq.ui.action.resource.common.monitor.visibility.InventoryHelper.isResourceConfigured(InventoryHelper.java:259)
2 org.hyperic.hq.ui.action.resource.common.monitor.visibility.InventoryHelper.isResourceConfigured(InventoryHelper.java:246)
2 org.hyperic.hq.ui.action.resource.common.monitor.visibility.CurrentHealthAction.execute(CurrentHealthAction.java:120)
2 org.hyperic.hq.ui.action.resource.common.monitor.visibility.CurrentHealthAction.execute(CurrentHealthAction.java:113)
2 org.hyperic.hq.ui.action.portlet.addcontent.ViewAction.execute(ViewAction.java:79)
2 com.hyperic.hq.ui.util.UIUtilsImpl.setResourceFlags(UIUtilsImpl.java:96)
2 com.hyperic.hq.ui.action.resource.common.monitor.visibility.ProblemMetricsDisplayAction.execute(ProblemMetricsDisplayAction.java:142)
1 org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1236)
1 org.hyperic.util.jdbc.DBUtil.getDBType(DBUtil.java:222)
1 org.hyperic.hq.ui.security.UISessionInitializationStrategy.loadDashboard(UISessionInitializationStrategy.java:121)
1 org.hyperic.hq.ui.security.UISessionInitializationStrategy.loadDashboard(UISessionInitializationStrategy.java:118)
1 org.hyperic.hq.ui.security.BaseSessionInitializationStrategy.onAuthentication(BaseSessionInitializationStrategy.java:75)
1 org.hyperic.hq.ui.security.BaseSessionInitializationStrategy.onAuthentication(BaseSessionInitializationStrategy.java:100)
1 org.hyperic.hq.ui.security.BaseSessionInitializationStrategy.loadUserPermissions(BaseSessionInitializationStrategy.java:145)
1 org.hyperic.hq.ui.security.BaseSessionInitializationStrategy.getUserPreferences(BaseSessionInitializationStrategy.java:160)
1 org.hyperic.hq.ui.login.LoginController.login(LoginController.java:60)
1 org.hyperic.hq.ui.action.resource.hub.ResourceHubPortalAction.execute(ResourceHubPortalAction.java:409)
1 org.hyperic.hq.ui.action.resource.hub.ResourceHubPortalAction.execute(ResourceHubPortalAction.java:378)
1 org.hyperic.hq.ui.action.resource.hub.ResourceHubPortalAction.execute(ResourceHubPortalAction.java:327)
1 org.hyperic.hq.ui.action.resource.hub.ResourceHubPortalAction.execute(ResourceHubPortalAction.java:303)
1 org.hyperic.hq.ui.action.resource.hub.ResourceHubPortalAction.execute(ResourceHubPortalAction.java:279)
1 org.hyperic.hq.ui.action.resource.common.monitor.visibility.IndicatorChartsAction.getViewMetrics(IndicatorChartsAction.java:383)
1 org.hyperic.hq.ui.action.portlet.search.ViewAction.execute(ViewAction.java:62)
1 org.hyperic.hq.ui.action.portlet.savedqueries.ViewAction.execute(ViewAction.java:87)
1 org.hyperic.hq.ui.action.portlet.resourcehealth.ViewAction.execute(ViewAction.java:89)
1 org.hyperic.hq.ui.action.portlet.resourcehealth.ViewAction.execute(ViewAction.java:114)
1 org.hyperic.hq.ui.action.portlet.resourcehealth.ViewAction.execute(ViewAction.java:107)
1 org.hyperic.hq.ui.action.portlet.recentlyApproved.ViewAction.execute(ViewAction.java:91)
1 org.hyperic.hq.ui.action.portlet.recentlyApproved.ViewAction.execute(ViewAction.java:81)
1 org.hyperic.hq.ui.action.portlet.DisplayDashboardAction.execute(DisplayDashboardAction.java:95)
1 org.hyperic.hq.ui.action.portlet.DisplayDashboardAction.execute(DisplayDashboardAction.java:231)
1 org.hyperic.hq.ui.action.portlet.DisplayDashboardAction.execute(DisplayDashboardAction.java:165)
1 org.hyperic.hq.ui.action.portlet.DisplayDashboardAction.execute(DisplayDashboardAction.java:103)
1 org.hyperic.hq.ui.action.portlet.criticalalerts.ViewAction.execute(ViewAction.java:92)
1 org.hyperic.hq.ui.action.portlet.criticalalerts.ViewAction.execute(ViewAction.java:143)
1 org.hyperic.hq.ui.action.portlet.criticalalerts.ViewAction.execute(ViewAction.java:135)
1 org.hyperic.hq.ui.action.portlet.controlactions.ViewAction.execute(ViewAction.java:88)
1 org.hyperic.hq.ui.action.portlet.controlactions.ViewAction.execute(ViewAction.java:141)
1 org.hyperic.hq.ui.action.portlet.controlactions.ViewAction.execute(ViewAction.java:115)
1 org.hyperic.hq.ui.action.portlet.controlactions.ViewAction.execute(ViewAction.java:109)
1 org.hyperic.hq.ui.action.portlet.availsummary.ViewAction.execute(ViewAction.java:99)
1 org.hyperic.hq.ui.action.portlet.availsummary.ViewAction.execute(ViewAction.java:162)
1 org.hyperic.hq.ui.action.portlet.autoDisc.ViewAction.execute(ViewAction.java:97)
1 org.hyperic.hq.ui.action.portlet.autoDisc.ViewAction.execute(ViewAction.java:91)
1 org.hyperic.hq.ui.action.portlet.autoDisc.ViewAction.execute(ViewAction.java:104)
1 org.hyperic.hq.security.JdbcHQAuthenticationProvider.authenticate(JdbcHQAuthenticationProvider.java:53)
1 org.hyperic.hq.security.InternalAuthenticationProvider.authenticate(InternalAuthenticationProvider.java:54)
1 org.hyperic.hq.security.InternalAuthenticationProvider.authenticate(InternalAuthenticationProvider.java:45)
1 org.hyperic.hq.product.server.session.ProductManagerImpl.preload(ProductManagerImpl.java:238)
1 org.hyperic.hq.measurement.server.session.ReportStatsCollector.initialize(ReportStatsCollector.java:88)
1 org.hyperic.hq.measurement.server.session.MeasurementSystemInitializer.prefetchEnabledMeasurementsAndTemplates(MeasurementSystemInitializer.java:122)
1 org.hyperic.hq.measurement.server.session.MeasurementSystemInitializer.init(MeasurementSystemInitializer.java:72)
1 org.hyperic.hq.measurement.server.session.DataCompressImpl$CommonRoutines.runRoutines(DataCompressImpl.java:164)
1 org.hyperic.hq.ha.server.session.HAStarter.startHAService(HAStarter.java:26)
1 org.hyperic.hq.ha.server.session.HAServiceImpl$1.run(HAServiceImpl.java:62)
1 org.hyperic.hq.events.server.session.RegisteredTriggerManagerImpl.cleanupRegisteredTriggers(RegisteredTriggerManagerImpl.java:120)
1 org.hyperic.hq.escalation.server.session.EscalationRuntimeInitializer.startEscalationManager(EscalationRuntimeInitializer.java:45)
1 org.hyperic.hq.dao.PrincipalDAO.findByUsername(PrincipalDAO.java:57)
1 [org.hyperic.hq.ConnectionIdentifier@40]
1 org.hyperic.hq.common.server.session.Crispo.toResponse(Crispo.java:94)
1 org.hyperic.hq.common.server.session.Crispo$$EnhancerByCGLIB$$bdac6e77.toResponse(<generated>)
1 org.hyperic.hq.bizapp.server.session.ResourceCleanupEventListener.processEvents(ResourceCleanupEventListener.java:48)
1 org.hyperic.hq.bizapp.server.session.ResourceCleanupEventListenerInitializer.init(ResourceCleanupEventListenerInitializer.java:20)
1 org.hyperic.hq.autoinventory.server.session.AutoinventoryManagerImpl.createDependentManagers(AutoinventoryManagerImpl.java:867)
1 org.hyperic.hq.autoinventory.server.session.AgentAIScanServiceImpl.notifyAgents(AgentAIScanServiceImpl.java:53)
1 org.hyperic.hq.authz.server.session.AuthzSubject$$EnhancerByCGLIB$$6d12ca3a.getName(<generated>)
1 org.hyperic.hq.auth.server.session.UserAuditFactory.loginAudit(UserAuditFactory.java:41)
1 org.hyperic.hibernate.id.HQMultipleHiLoPerTableGenerator.executeInNewTransaction(HQMultipleHiLoPerTableGenerator.java:213)
1 com.hyperic.hq.ui.action.portlet.problemresources.ViewAction.execute(ViewAction.java:94)
1 com.hyperic.hq.ui.action.portlet.problemresources.ViewAction.execute(ViewAction.java:63)
1 com.hyperic.hq.rt.server.session.ResponseTimeManagerImpl.afterPropertiesSet(ResponseTimeManagerImpl.java:246)
1 com.hyperic.hq.measurement.server.session.MeasurementInserterManager.setupInserter(MeasurementInserterManager.java:61)
Anonymous