# Diagnosing Cause of High CPU Usage

**URL:** <https://forum.inductiveautomation.com/t/diagnosing-cause-of-high-cpu-usage/71869>\
**Category:** Ignition\
**Tags:** perspective, ignition81\
**Created:** [March 31, 2023, 12:04am UTC](https://forum.inductiveautomation.com/t/diagnosing-cause-of-high-cpu-usage/71869 "2023-03-31T00:04:14Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![jstaebell](https://avatars.discourse-cdn.com/v4/letter/j/71e660/32.png) [@jstaebell](https://forum.inductiveautomation.com/u/jstaebell)\
**Post date:** [March 31, 2023, 12:04am UTC](https://forum.inductiveautomation.com/t/diagnosing-cause-of-high-cpu-usage/71869/1 "2023-03-31T00:04:14Z")

</div>

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/e/fe1025efdd69bdf32493ea5736ad664c6512c595.png)

I am trying to figure out why our CPU usage spiked high and was not able to come down all day. Looking at the threads it appears that most of the usage is associated with WebAPI. But I'm not quite sure what that is referring to exactly in the process. Nobody was in the gateway or pushed any changes at the 9:30 mark today. I'm a bit stumped on what to look for to track this down.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/2/02319feabdf4b8e71e9a374dbc0ca0d4470b1137.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/e/e/ee8976a61db1a1fe7626ac6c5cf605710d643b6a.png)

Here is a sample of the information for the task taking up 6% of the useage  
Thread [webserver-969556] id=969556, (RUNNABLE)  
java.base@11.0.15/java.lang.Integer.valueOf(Unknown Source)  
com.inductiveautomation.gateway.tags.history.query.DatasourceQueryExecutor.getValueFromRS(DatasourceQueryExecutor.java:620)  
com.inductiveautomation.gateway.tags.history.query.DatasourceQueryExecutor.readSingle(DatasourceQueryExecutor.java:1080)  
com.inductiveautomation.gateway.tags.history.query.DatasourceQueryExecutor.readNextFromSource(DatasourceQueryExecutor.java:1009)  
com.inductiveautomation.gateway.tags.history.query.DatasourceQueryExecutor.readNextFromSource(DatasourceQueryExecutor.java:93)  
app//com.inductiveautomation.ignition.gateway.sqltags.history.query.AbstractHistoryLoader.readNext(AbstractHistoryLoader.java:179)  
app//com.inductiveautomation.ignition.gateway.sqltags.history.query.AbstractHistoryLoader.processData(AbstractHistoryLoader.java:161)  
app//com.inductiveautomation.ignition.gateway.sqltags.history.query.AggregateHistoryQueryExecutor.processData(AggregateHistoryQueryExecutor.java:107)  
app//com.inductiveautomation.ignition.gateway.sqltags.history.query.HistoryWriter.readData(HistoryWriter.java:319)  
app//com.inductiveautomation.ignition.gateway.sqltags.history.query.HistoryWriter.execute(HistoryWriter.java:232)  
app//com.inductiveautomation.ignition.gateway.sqltags.history.TagHistoryManagerImpl.queryHistory(TagHistoryManagerImpl.java:570)  
app//com.inductiveautomation.ignition.gateway.tags.model.ProjectDefaultTagManagerFacade.queryHistory(ProjectDefaultTagManagerFacade.java:440)  
com.inductiveautomation.perspective.gateway.components.PowerChartModelDelegate$TagHistoryFetch.fetch(PowerChartModelDelegate.java:237)  
com.inductiveautomation.perspective.gateway.comm.FetchableCacheImpl.lambda$fetch$0(FetchableCacheImpl.java:47)  
com.inductiveautomation.perspective.gateway.comm.FetchableCacheImpl$$Lambda$5028/0x0000029e06258cb0.run(Unknown Source)  
com.inductiveautomation.perspective.gateway.threading.BlockingWork.invokeBlockingTask(BlockingWork.java:34)  
com.inductiveautomation.perspective.gateway.comm.FetchableCacheImpl.fetch(FetchableCacheImpl.java:47)  
com.inductiveautomation.perspective.gateway.comm.Routes.handleFetch(Routes.java:2233)  
com.inductiveautomation.perspective.gateway.comm.Routes$$Lambda$3247/0x00000295ec3ab858.handle(Unknown Source)  
app//com.inductiveautomation.ignition.gateway.dataroutes.Route.service(Route.java:254)  
app//com.inductiveautomation.ignition.gateway.dataroutes.RouteGroupImpl.service(RouteGroupImpl.java:61)  
app//com.inductiveautomation.ignition.gateway.dataroutes.RouteGroupCollectionServlet.serviceInternal(RouteGroupCollectionServlet.java:59)  
app//com.inductiveautomation.ignition.gateway.dataroutes.AbstractRouteGroupServlet.service(AbstractRouteGroupServlet.java:38)  
app//javax.servlet.http.HttpServlet.service(HttpServlet.java:790)  
app//org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1450)  
app//org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)  
app//org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631)  
app//org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)  
app//org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)  
app//org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)  
app//org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)  
app//org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)  
app//org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)  
app//org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)  
app//org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)  
app//org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)  
app//org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)  
app//org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)  
app//org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)  
app//org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)  
app//org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)  
app//org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)  
app//com.inductiveautomation.catapult.handlers.RemoteHostNameLookupHandler.handle(RemoteHostNameLookupHandler.java:121)  
app//org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)  
app//org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:322)  
app//org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59)  
app//org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)  
app//org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)  
app//org.eclipse.jetty.server.Server.handle(Server.java:516)  
app//org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)  
app//org.eclipse.jetty.server.HttpChannel$$Lambda$568/0x00000295d710b040.dispatch(Unknown Source)  
app//org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)  
app//org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)  
app//org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)  
app//org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)  
app//org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)  
app//org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555)  
app//org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410)  
app//org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164)  
app//org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)  
app//org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)  
app//org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)  
app//org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)  
app//org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)  
app//org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)  
app//org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)  
app//org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)  
app//org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)  
java.base@11.0.15/java.lang.Thread.run(Unknown Source)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [March 31, 2023, 12:25am UTC](https://forum.inductiveautomation.com/t/diagnosing-cause-of-high-cpu-usage/71869/2 "2023-03-31T00:25:02Z")

</div>

I'm going to guess a user was requesting large history time spans for a PowerChart.
