2016-03-02 42 views
0

我們有基於J2EE的Web應用程序。我們間歇性地面臨着我們的生產環境中高CPU使用率(80-90%)。 我們無法在我們的QA環境中複製它。排除Windows服務器CPU佔用率過高的問題

生產環境:Windows 2012服務器(64位),JDK 1.8(64位)

對於我們所採取線程轉儲故障排除。 它顯示總共215個線程。

111 threads are in WAITING status 
34 threads are in RUNNABLE status 
67 threads are in TIMED_WAITING status 
3 threads are in BLOCKED status 

我們怎樣才能找到哪些線程導致高CPU使用率?

線程轉儲

2016年3月1日11時07分52秒全部線程轉儲的HotSpot的Java(TM)64位服務器VM (25.5-B02混合模式):

「主題-739969「 - 線程t @ 807668 java.lang.Thread.State:正在等待 at java.lang.Object.wait(本地方法) - 等待< 229fc226>(a org.apache.solr.util.ConcurrentLRUCache $ CleanupThread )at java.lang.Object.wait(Object.java:502)at org.apache.solr.util.ConcurrentLRUCache $ CleanupThread .RUN(ConcurrentLRUCache.java:604)

鎖定的可擁有同步: - 無

「線程739968」 - 線程t @ 807667 java.lang.Thread.State中:在java.lang.Object中WAITING .wait(Native Method) - 等待< 5a578345>(org.apache.solr.util.ConcurrentLRUCache $ CleanupThread)at java.lang.Object.wait(Object.java:502)at org.apache.solr .util.ConcurrentLRUCache $ CleanupThread.run(ConcurrentLRUCache.java:604)

鎖定的擁有同步器: - 無

「線程739963」 - 線程t @ 807662 java.lang.Thread.State中:在java.lang.Object.wait(本機方法) WAITING - 等待< 20851ef7>(一個組織。 apache.solr.util.ConcurrentLRUCache $ CleanupThread)在 java.lang.Object.wait(Object.java:502)在 org.apache.solr.util.ConcurrentLRUCache $ CleanupThread.run(ConcurrentLRUCache.java:604)

鎖定的可擁有同步: - 無

「線程739962」 - 線程t @ 807661 java.lang.Thread.State中:等候java.lang.Object.wait(Object.java:502) - java.lang.Object.wait上的(Native Method) - 等待< 35061b89>(a org.apache.solr.util.ConcurrentLRUCache $ CleanupThread) java.lang.Object.wait在 org.apache.solr.util.ConcurrentLRUCache $ CleanupThread.run(ConcurrentLRUCache.java:604)

鎖定的可擁有同步: - 無

「線程739960」 - 線程t @ 807659 java.lang中.Thread.State:等待 在java.lang.Object.wait(本地方法) - 等待< 3491a931>(一個org.apache.solr.util。ConcurrentLRUCache $ CleanupThread)在 java.lang.Object.wait(Object.java:502)在 org.apache.solr.util.ConcurrentLRUCache $ CleanupThread.run(ConcurrentLRUCache.java:604)

鎖定的可擁有同步: - 無

「線程739959」 - 線程t @ 807658 java.lang.Thread.State中:在java.lang.Object.wait(本機方法) WAITING - 等待< 6395c27d>(一個組織。 apache.solr.util.ConcurrentLRUCache $ CleanupThread) org.apache.solr.util.ConcurrentLRUCache java.lang.Object.wait(Object.java:502) $ CleanupThread.run(Concurrent LRUCache.java:604)

鎖定擁有同步器: - 沒有

「httpShardExecutor -3-線程57429-處理 - {核心= actionscomments, 複製品= core_node1, ShardRequest.shards = s1.asite .com:8983 // solr // actionscomments | s1r1.asite.com:8983 // solr // actionscomments, node_name = 10.120.112.31:8983_solr,shard = shard1, collection = actionscomments, ShardRequest.urlList = [http:////s1r1.asite.com:8983//solr//actionscommentshttp:////s1.asite.com:8983//solr//actionscomments]}「 - 線程t @ 807648 java.lang.Thread.State:RUNNABLE在 java.net.SocketInputStream.socketRead0(Native Method)at java.net.SocketInputStream.read(SocketInputStream.java:150)at java.net.SocketInputStream.read(SocketInputStream.java:121)at org.apache.http .impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:160) 在 org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:84) 在 org.apache.http.impl.io .SocketInputBuffer.isDataAvailable(SocketInputBuffer.java:95) 在 org.apache.http.impl.AbstractHttpClientConnection.isStale(AbstractHttpClientConnection.java:310) 在 org.apache.http.impl.conn.ManagedClientConnectionImpl.isStale(ManagedClientConnectionIm pl.java:158) 在 org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:433) 在 org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java: 882) 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107) 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) 在 org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:466) 在 org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:235) 在 org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:227) 在 org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:376) 在 org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:328) 在 org.apache.solr.handler.component.HttpShardHandlerFactory.makeLoadBalancedRequest(HttpShardHandlerFactory.java:246) 在 org.apache.solr.handler.component.HttpShardHandler $ 1.call(HttpShardHandler.java:221) 在 組織。 apache.solr.handler.component。HttpShardHandler $ 1.call(HttpShardHandler.java:183) at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)在 org.apache.solr.common.util.ExecutorUtil $ MDCAwareThreadPoolExecutor $ 1.run(ExecutorUtil.java:148) 在 的java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)

鎖定擁有同步器: - 鎖定(一個java.util.concurrent.ThreadPoolExecutor $工人)

回答

0

嘗試Jconsole(TopThread插件)或visulavm(HotThread探測器插件),這些插件解釋你在找什麼。檢查this的問題也。