İş parçacığı profil oluşturma, türlerine göre CPU süresi ve iş parçacığı sayıları hakkında iş parçacığı düzeyinde istatistikler sunar. Gerçek kod çalıştırmasını yeniden yapılandırmak ve iş parçacığıyla ilgili sorunları hızla tespit etmenize yardımcı olmak için her 5 dakikada bir iş parçacıklarının yöntem yığınını kaydeder ve toplar. Kümenizde yüksek CPU kullanımı veya çok sayıda yavaş yöntem fark ederseniz en fazla CPU tüketen iş parçacıklarını veya yöntemleri bulmak için iş parçacığı profil oluşturmayı kullanabilirsiniz.
Bu özellik şu anda yalnızca Java uygulamaları için kullanılabilir.
Ön Koşullar
ARMS uygulama izleme, yeni faturalandırma planındaki kullanıcılar için yeni bir izleme ayrıntıları sayfası sunar. Yeni faturalandırma planı hakkında daha fazla bilgi için bkz. Faturalandırma (Yeni).
Yeni faturalandırma planını etkinleştirmediyseniz application list sayfasında Switch to New Version seçeneğini tıklayın.
Uygulamanız için bir aracı yüklenmiş olmalıdır. Daha fazla bilgi için bkz. Uygulama İzleme Entegrasyonuna Genel Bakış.
Yordam
ARMS konsolu oturumunu açın. Sol gezinme bölmesinde seçeneğini belirleyin.
-
Application List sayfasında üst kısımdan hedef bölgeyi seçin ve ardından uygulamanızın adını tıklayın.
NotLanguage sütunundaki simgeler aşağıdaki anlamlara gelir:
: Uygulama izleme ile entegre edilmiş bir Java uygulaması.
: Uygulama izleme ile entegre edilmiş bir Go uygulaması.
: Uygulama izleme ile entegre edilmiş bir Python uygulaması.-: Managed Service for OpenTelemetry ile entegre edilmiş bir uygulama.
Üst gezinme çubuğunda seçeneğini belirleyin.
İş parçacıklarını analiz etme
Thread Profiling sayfasının sol tarafındaki listede tüm uygulama iş parçacıkları görüntülenir; bu sayede CPU time değerlerine göre anormal iş parçacıklarını hızlıca bulabilirsiniz. Anormal bir iş parçacığı seçtikten sonra sağ taraftaki grafikleri kullanarak bunun CPU time ve Number of Threads değerlerini analiz edin. Örneğin dakika başına toplam iş parçacığı sayısının aşırı olup olmadığını kontrol edin.
Herhangi bir anormal iş parçacığı için belirtilen bir zaman dilimindeki çalışma zamanı yöntem yığınını görüntülemek üzere Method Stack seçeneğini tıklayın. Örneğin BLOCKED durumunda olan iş parçacıklarına karşılık gelen yöntemleri görüntüleyebilirsiniz. Bu CPU kullanımını azaltmak ve optimize etmek için belirli kod segmentlerini tanımlamanıza yardımcı olur.
ALL: 365194 RUNNABLE: 986 BLOCKED: 87 WAITING: 1498 TIMED_WAITING: 362617
【BLOCKED】81/87 (times) - Percentage: 93.10%
at java.lang.Object.wait (Native Method)
at xxx.awaitAvailable (BasicResourcePool.java:1315)
at xxx.prelimCheckoutResource (BasicResourcePool.java:557)
at xxx.checkoutResource (BasicResourcePool.java:477)
at xxx.checkoutPooledConnection (C3P0PooledConnectionPool.java:525)
at xxx.getConnection (AbstractPoolBackedDataSource.java:128)
at xxx.getConnection (PoolingConnectionProvider.java:247)
at xxx.getConnection (DBConnectionManager.java:108)
at xxx.getConnection (JobStoreSupport.java:775)
at com.alibaba.arms.alert.scheduler.xxx.EnhanceJobStoreSupport.getNonManagedTXConnection (EnhanceJobStoreSupport.java:17)
at xxx.executeInNonManagedTXLock (JobStoreSupport.java:3777)
at xxx.retryExecuteInNonManagedTXLock (JobStoreSupport.java:3742)
at xxx.triggeredJobComplete (JobStoreSupport.java:3039)
at xxx.notifyJobStoreJobComplete (QuartzScheduler.java:1804)
at xxx.JobRunShell.java:269)
at xxx$WorkerThread.run (SimpleThreadPool.java:573)
【BLOCKED】2/87 (times) - Percentage: 2.30%
at xxx.checkinStatement (GooGooStatementCache.java:220)
at xxx.checkinStatement (NewPooledConnection.java:239)
at xxx.close (NewProxyPreparedStatement.java:1807)
at xxx.closeStatement (StdJDBCDelegate.java:3287)
at xxx.deleteFiredTrigger (StdJDBCDelegate.java:2916)
at xxx.triggeredJobComplete (JobStoreSupport.java:3116)
at xxx.executeVoid (JobStoreSupport.java:3043)
at xxx.$VoidTransactionCallback.execute (JobStoreSupport.java:3703)
at xxx.$VoidTransactionCallback.execute (JobStoreSupport.java:3701)
at xxx.executeInNonManagedTXLock (JobStoreSupport.java:3787)
at xxx.retryExecuteInNonManagedTXLock (JobStoreSupport.java:3742)
at xxx.triggeredJobComplete (JobStoreSupport.java:3039)
at xxx.notifyJobStoreJobComplete (QuartzScheduler.java:1804)
at xxx.JobRunShell.java:269)
at xxx.WorkerThread.run (SimpleThreadPool.java:573)
【BLOCKED】1/87 (times) - Percentage: 1.15%
Aracı sürümünüz 2.7.3.5 veya üzeriyse ARMS iş parçacığı CPU kullanımına ilişkin daha doğru yöntem yığını bilgileri sağlamak için sürekli profil oluşturmayı kullanır. Aşağıdaki görsel bir örneği göstermektedir. Daha fazla bilgi için bkz. sürekli profil oluşturma.

Method Stack seçeneğini tıkladıktan sonra veri görüntülenmiyorsa sorun gidermek için şu adımları izleyin:
Aracı sürümünüz 2.7.3.5'ten önceyse sekmesindeki Thread Settings bölümüne gidin ve Method stack for thread profiling anahtarının etkin olup olmadığını kontrol edin. Bu anahtar devre dışı bırakılırsa yöntem yığını bilgileri kaydedilemez. Etkinleştirilirse yöntem yığını bilgileri her 5 dakikada bir toplanır.
Aracı sürümünüz 2.7.3.5 veya üzeriyse sekmesindeki Continuous profiling bölümüne gidin ve main switch ile CPU hotspots anahtarlarının etkin olduğundan emin olun. Yöntem yığını bilgilerinin kaydedilmesi için her iki anahtarın da etkinleştirilmesi gerekir.