{"id":27825,"date":"2025-06-12T09:29:02","date_gmt":"2025-06-12T16:29:02","guid":{"rendered":"https:\/\/www.pingcap.com\/?p=27825"},"modified":"2025-06-13T03:22:33","modified_gmt":"2025-06-13T10:22:33","slug":"tidb-runtime-dashboard-detailed-analysis-use-cases","status":"publish","type":"post","link":"https:\/\/www.pingcap.com\/ko\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/","title":{"rendered":"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases"},"content":{"rendered":"<p>In TiDB&#8217;s runtime environment, issues related to memory management, garbage collection (GC) behavior, and lock contention at the Go Runtime level can significantly impact system stability and performance. However, such problems are often difficult to reproduce and analyze directly. As a result, high-quality runtime monitoring metrics are essential for effective troubleshooting and performance tuning.<\/p>\n\n\n\n<p>This blog introduces the TiDB Runtime Dashboard, focusing on its practical value in diagnosing runtime issues. We will first outline the types of problems this dashboard is designed to help investigate. Then, we will provide detailed explanations of commonly used panels. Finally, we will walk through a real-world example to demonstrate how these panels can assist in analyzing and pinpointing issues.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Note: This article is based on the TiDB Runtime Dashboard available in <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/release-8.5.0\/\">TiDB 8.5<\/a>.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDB_Runtime_Dashboard_Applicable_Troubleshooting_Scenarios\"><\/span>TiDB Runtime Dashboard: Applicable Troubleshooting Scenarios<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>This section outlines common symptoms such as memory spikes, CPU overhead, GC-induced latency, and lock contentions. It explains how to use specific monitoring panels to identify their root causes. Each scenario includes guidance on what to look for and how to interpret TiDB\u2019s runtime metrics for faster, more targeted troubleshooting.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Abnormal Memory Usage<\/strong><\/h3>\n\n\n\n<p>When a <a href=\"https:\/\/www.pingcap.com\/ko\/tidb-self-managed\/\">\ud2f0DB<\/a> instance experiences an OOM (Out of Memory) event or abnormally high memory usage, the <strong>Memory Usage<\/strong> panel can help identify the root cause. By analyzing memory usage trends and object allocation breakdowns, users can determine whether the issue is due to a memory leak, frequent small-object allocations, or delayed garbage collection.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Abnormal CPU Usage<\/strong><\/h3>\n\n\n\n<p>For issues involving unexpectedly high or fluctuating CPU usage, the <strong>Estimated Portion of CPU Time<\/strong> panel provides insights into how CPU time is distributed between user code and Go Runtime components. This helps identify whether GC, scavenging, or other runtime-level processes are consuming excessive CPU resources, aiding in pinpointing the true source of overhead.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Latency Spikes Caused by GC<\/strong><\/h3>\n\n\n\n<p>Inefficient garbage collection behavior can cause significant latency jitter, especially when frequent <strong>stop-the-world (STW)<\/strong> pauses occur in a short time. Panels such as <strong>Golang GC<\/strong>, <strong>GC STW Latency<\/strong>, \uadf8\ub9ac\uace0 <strong>GOGC &amp; GOMEMLIMIT<\/strong> provide a comprehensive view of GC frequency, duration, and configuration parameters, helping assess whether GC behavior is reasonable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Lock Contention<\/strong><\/h3>\n\n\n\n<p>When a TiDB instance exhibits high CPU usage or blocked Goroutines, it may be due to lock contention or scheduler resource pressure. Panels like <strong>Goroutine Count<\/strong> \uadf8\ub9ac\uace0 <strong>SyncMutex Wait<\/strong> reveal whether large numbers of Goroutines block or if the system uses locks inefficiently, providing valuable clues for further investigation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDB_Runtime_Dashboard_Explaining_Key_Panels_in_Detail\"><\/span>TiDB Runtime Dashboard: Explaining Key Panels in Detail<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In this section, we&#8217;ll break down the most important monitoring panels\u2014what they measure, why they matter, and how to interpret their output. Whether you&#8217;re tracking memory consumption, garbage collection frequency, or lock contention, these visualizations provide a window into the inner workings of the TiDB runtime and Go execution environment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Memory Usage<\/h3>\n\n\n\n<p>This panel displays the overall memory usage of the <code>tidb-server<\/code> process. It consists of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RSS line graph<\/strong>: Shows the actual physical memory usage (Resident Set Size) of the process.<\/li>\n\n\n\n<li><strong>Stacked bar chart<\/strong>: Breaks down memory usage into detailed categories to help users understand memory consumption.<\/li>\n<\/ul>\n\n\n\n<p>Descriptions of the main fields in the stacked bar chart:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>heap_inuse<\/strong>: Heap memory actively used by Go application code.<\/li>\n\n\n\n<li><strong>heap_unused<\/strong>: The Go Runtime allocates this heap memory from the operating system but does not currently use it (it remains reserved but unallocated).<\/li>\n\n\n\n<li><strong>stack_inuse<\/strong>: Memory used by Goroutine stacks.<\/li>\n\n\n\n<li><strong>go_runtime_metadata<\/strong>: Overhead from Go Runtime for managing metadata such as type and memory information.<\/li>\n\n\n\n<li><strong>free_mem_reserved_by_go<\/strong>: Free memory reserved by the Go Runtime from the OS, held for future allocations to reduce the overhead of frequent system calls.<\/li>\n<\/ul>\n\n\n\n<p>This panel allows users to quickly assess whether memory usage is healthy and whether there are signs of over-allocation or delayed memory release.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"870\" height=\"438\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083446\/image-6.png\" alt=\"TiDB Runtime Dashboard showing whether memory usage is healthy and if there are signs of over-allocation or delayed memory release.\" class=\"wp-image-27863\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083446\/image-6.png 870w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083446\/image-6-300x151.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083446\/image-6-768x387.png 768w\" sizes=\"auto, (max-width: 870px) 100vw, 870px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Estimated Portion of CPU Time<\/h3>\n\n\n\n<p>This panel displays the estimated CPU time distribution across different types of system tasks in a TiDB instance. It helps users quickly identify the primary sources of CPU consumption. This panel helps diagnose high CPU usage scenarios by showing whether business logic or the Go Runtime (e.g., garbage collection or memory scavenging) consumes the CPU.<\/p>\n\n\n\n<p>The main fields in this panel include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>user_total<\/strong>: CPU time consumed by user code, typically representing the cost of actual business logic execution.<\/li>\n\n\n\n<li><strong>gc_total<\/strong>: CPU time used by Golang garbage collection (GC), reflecting the impact of memory reclamation on CPU resources.<\/li>\n\n\n\n<li><strong>idle_total<\/strong>: Time when the CPU is idle (i.e., no runnable tasks in the scheduler), useful for identifying over-provisioned resources or low workload.<\/li>\n\n\n\n<li><strong>scavenge_total<\/strong>: CPU time spent by the Go Runtime scavenger, which runs in the background to return unused physical memory pages to the operating system.<\/li>\n<\/ul>\n\n\n\n<p>This panel can help answer several common questions:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Is the TiDB instance currently under GC pressure?<\/li>\n\n\n\n<li>Is a significant portion of CPU being consumed by background runtime tasks such as scavenging?<\/li>\n\n\n\n<li>Does user-level CPU usage align with the expected business load?<\/li>\n<\/ul>\n\n\n\n<p>Users can also combine this panel with <strong>Golang GC, GC STW Latency<\/strong>, and other related panels to build a comprehensive view of GC-related performance overhead.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"428\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083507\/image-7.png\" alt=\"TiDB Runtime Dashboard showing a comprehensive view of GC-related performance overhead.\" class=\"wp-image-27864\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083507\/image-7.png 868w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083507\/image-7-300x148.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083507\/image-7-768x379.png 768w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Golang GC<\/h3>\n\n\n\n<p>This panel shows the number of Golang garbage collection (GC) events triggered during each monitoring interval, helping users visualize the frequency of GC operations.<\/p>\n\n\n\n<p>Users often analyze the impact of GC on CPU resource consumption by using this panel in conjunction with the <strong>Estimated Portion of CPU Time<\/strong> panel. For example, if the GC trigger frequency is high and the corresponding CPU time used by GC increases significantly, it may indicate GC pressure within the system, which could negatively affect overall TiDB performance.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"854\" height=\"424\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083520\/image-8.png\" alt=\"TiDB Runtime Dashboard showing  the impact of GC on CPU resource consumption. \" class=\"wp-image-27865\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083520\/image-8.png 854w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083520\/image-8-300x149.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083520\/image-8-768x381.png 768w\" sizes=\"auto, (max-width: 854px) 100vw, 854px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">GC STW Latency (&gt;= go 1.22.0)<\/h3>\n\n\n\n<p>This panel displays the latency of Stop-The-World pauses triggered by garbage collection, offering a more fine-grained and low-latency view compared to the older <strong>GC STW Duration (last 256 GC cycles)<\/strong> panel (shown in the first diagram below).<\/p>\n\n\n\n<p>In addition, this panel distinguishes between <strong>GC-triggered STW<\/strong> \uadf8\ub9ac\uace0 <strong>non-GC-triggered STW<\/strong> events, allowing users to analyze the performance impact of STW pauses in greater detail. For example, if non-GC-related STW latency is high, it may point to overhead from other sources such as frequent profile collection or debugging operations.<\/p>\n\n\n\n<p><em>Note: The <strong>GC STW Duration (last 256 GC cycles)<\/strong> panel presents quantile statistics (e.g., min \/ p25 \/ p50 \/ p75 \/ max) for STW durations across the most recent 256 GC cycles. Compared to GC STW Latency, its granularity is relatively coarse and is better suited for historical trend analysis.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"870\" height=\"442\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12091113\/image-20.png\" alt=\"TiDB Runtime Dashboard\" class=\"wp-image-27899\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12091113\/image-20.png 870w, https:\/\/static.pingcap.com\/files\/2025\/06\/12091113\/image-20-300x152.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12091113\/image-20-768x390.png 768w\" sizes=\"auto, (max-width: 870px) 100vw, 870px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"866\" height=\"436\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083559\/image-10.png\" alt=\"TiDB Runtime Dashboard\" class=\"wp-image-27868\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083559\/image-10.png 866w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083559\/image-10-300x151.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083559\/image-10-768x387.png 768w\" sizes=\"auto, (max-width: 866px) 100vw, 866px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Sync Mutex Wait<\/h3>\n\n\n\n<p>This panel displays the <strong>cumulative time (approximate)<\/strong> that Goroutines spend blocked on <code>sync.Mutex<\/code> \ub610\ub294 <code>sync.RWMutex<\/code>, helping users analyze lock contention within the system.<\/p>\n\n\n\n<p>By observing this panel, users can easily assess whether there are serious synchronization bottlenecks. For example, if TiDB\u2019s concurrency performance degrades and this metric shows a significant increase, it may indicate that critical execution paths are experiencing severe lock contention. In such cases, users should inspect mutex profiles or Goroutine stack traces to locate the root cause.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"428\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083617\/image-11.png\" alt=\"TiDB Runtime Dashboard\" class=\"wp-image-27869\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083617\/image-11.png 868w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083617\/image-11-300x148.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083617\/image-11-768x379.png 768w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">GOGC &amp; GOMEMLIMIT<\/h3>\n\n\n\n<p>This panel displays two key configuration parameters related to Golang&#8217;s GC: <strong>GOGC<\/strong> \uadf8\ub9ac\uace0 <strong>GOMEMLIMIT<\/strong>. These settings directly influence the memory management behavior of the Go Runtime.<\/p>\n\n\n\n<p>By monitoring this panel, users can determine whether TiDB\u2019s memory control mechanisms\u2014such as <code>enable_gogc_tuner<\/code> \uadf8\ub9ac\uace0 <code>tidb_server_memory_limit<\/code>\u2014are functioning as expected.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"858\" height=\"440\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083634\/image-12.png\" alt=\"\" class=\"wp-image-27870\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083634\/image-12.png 858w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083634\/image-12-300x154.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083634\/image-12-768x394.png 768w\" sizes=\"auto, (max-width: 858px) 100vw, 858px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDB_Runtime_Dashboard_Example_Golang_GC_Causing_Sustained_100_CPU_Usage_in_tidb-server\"><\/span>TiDB Runtime Dashboard Example: Golang GC Causing Sustained 100% CPU Usage in <code>tidb-server<\/code><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>This <a href=\"https:\/\/github.com\/pingcap\/tidb\/issues\/48741\">GitHub issue<\/a> reproduces a real-world problem encountered in a customer environment: after upgrading TiDB from an older version to <strong>TiDB 6.5<\/strong>, the <code>tidb-server<\/code> began experiencing <strong>sustained high CPU usage<\/strong> once memory consumption approached the threshold defined by <code>tidb_server_memory_limit<\/code>. This issue did <strong>not<\/strong> occur in earlier versions prior to the upgrade.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">TiDB Runtime Dashboard Observations<\/h3>\n\n\n\n<p>From the <strong>\ud2f0DB<\/strong><strong> Runtime \u2192 CPU Usage<\/strong> monitoring panel, we can see that CPU utilization started fluctuating significantly around <strong>16:48<\/strong>, and after <strong>16:55<\/strong>, it remained consistently at <strong>1600%<\/strong>, severely impacting business throughput.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"424\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083652\/image-13.png\" alt=\"\" class=\"wp-image-27871\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083652\/image-13.png 868w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083652\/image-13-300x147.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083652\/image-13-768x375.png 768w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><\/figure>\n\n\n\n<p>Given the abnormal CPU usage, the first step was to examine the <strong>\ud2f0DB<\/strong><strong> Runtime \u2192 Estimated Portion of CPU Time<\/strong> panel to analyze which tasks were contributing to the high CPU load.<\/p>\n\n\n\n<p>According to the monitoring data, the <strong><code>gc_total<\/code><\/strong> (CPU time spent on garbage collection) percentage increased significantly after <strong>16:48<\/strong>, jumping from <strong>1.8%<\/strong> to eventually stabilizing at around <strong>32%<\/strong>. Additionally, there was a clear positive correlation between the rise in <code>gc_total<\/code> and the overall CPU saturation, indicating that GC activity was a major contributor to the high CPU load.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"862\" height=\"426\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083703\/image-14.png\" alt=\"\" class=\"wp-image-27872\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083703\/image-14.png 862w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083703\/image-14-300x148.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083703\/image-14-768x380.png 768w\" sizes=\"auto, (max-width: 862px) 100vw, 862px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Mechanism Analysis<\/h3>\n\n\n\n<p>TiDB 6.5 introduced two new configuration parameters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>tidb_server_memory_limit<\/code><\/li>\n\n\n\n<li><code>tidb_server_memory_limit_gc_trigger<\/code><\/li>\n<\/ul>\n\n\n\n<p>When the memory usage of the <code>tidb-server<\/code> process reaches <code>tidb_server_memory_limit * tidb_server_memory_limit_gc_trigger<\/code>, TiDB will proactively trigger a Golang GC. This mechanism is implemented by dynamically adjusting the Go runtime\u2019s <code>GOMEMLIMIT<\/code> variable. The new <code>GOMEMLIMIT<\/code> value is set to <code>tidb_server_memory_limit * tidb_server_memory_limit_gc_trigger<\/code>.<\/p>\n\n\n\n<p>To avoid excessively frequent GC events, TiDB adopts an <strong>adaptive adjustment strategy<\/strong>:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Initial state<\/strong>: When memory usage is below the threshold, <code>tidb_server_memory_limit_gc_trigger<\/code> remains at its default value of <code>0.7<\/code>.<\/li>\n\n\n\n<li><strong>After GC is triggered<\/strong>: Once memory exceeds the threshold and triggers a GC, <code>tidb_server_memory_limit_gc_trigger<\/code> is increased to <code>1.1<\/code>, and then it automatically falls back to <code>0.7<\/code> after one minute.<\/li>\n<\/ol>\n\n\n\n<p>The expected behavior across different memory ranges is as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Memory usage &lt; <\/strong><strong><code>tidb_server_memory_limit * 0.7<\/code><\/strong>: The trigger remains at <code>0.7<\/code>, and CPU usage should stay within normal operational bounds.<\/li>\n\n\n\n<li><strong>Memory usage between <\/strong><strong><code>[limit * 0.7, limit * 1.1)<\/code><\/strong>: Each time the trigger drops back to <code>0.7<\/code>, it is immediately bumped back up to <code>1.1<\/code>. CPU load should still reflect regular workload patterns.<\/li>\n\n\n\n<li><strong>Memory usage \u2265 <\/strong><strong><code>limit * 1.1<\/code><\/strong>: The trigger remains at <code>1.1<\/code> long-term. However, due to frequent GC, CPU utilization may spike and reach saturation.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Note: Because of the contribution of non-heap memory, the actual upper and lower bounds may be slightly higher than the theoretical values.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Case-Specific Analysis<\/h3>\n\n\n\n<p>In this particular case:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>tidb_server_memory_limit = 760MB<\/code><\/li>\n\n\n\n<li><code>tidb_server_memory_limit_gc_trigger = 0.7<\/code><\/li>\n\n\n\n<li>The calculated threshold range is:\n<ul class=\"wp-block-list\">\n<li><strong>Lower bound<\/strong>: 760MB * 0.7 = <strong>532MB<\/strong><\/li>\n\n\n\n<li><strong>Upper bound<\/strong>: 760MB * 1.1 = <strong>836MB<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>According to the <strong>TiDB Runtime \u2192 GOGC &amp; GOMEMLIMIT<\/strong> panel, during the period from <strong>16:46 to 16:55<\/strong>, <code>GOMEMLIMIT<\/code> fluctuated between the calculated bounds. After 16:55, the system consistently met the trigger condition for frequent GC, keeping it locked at the lower bound.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"796\" height=\"432\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083755\/image-15.png\" alt=\"\" class=\"wp-image-27873\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083755\/image-15.png 796w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083755\/image-15-300x163.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083755\/image-15-768x417.png 768w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><\/figure>\n\n\n\n<p>Meanwhile, based on the <strong>\ud2f0DB<\/strong><strong> Runtime \u2192 Memory Usage<\/strong> panel, the <code>tidb-server<\/code> process&#8217;s RSS memory usage increased from <strong>580MB to 712MB<\/strong> between <strong>16:46 and 16:55<\/strong>, and continued to rise afterward.<\/p>\n\n\n\n<p>According to the previously described mechanism, within this memory range, <code>GOMEMLIMIT<\/code> should have remained near the <strong>upper bound<\/strong>. However, monitoring data showed that <code>GOMEMLIMIT<\/code> was still fixed at the <strong>lower bound<\/strong>, which deviates from the expected behavior.<\/p>\n\n\n\n<p>This discrepancy suggests that the <strong>adaptive adjustment mechanism for <\/strong><strong><code>tidb_server_memory_limit_gc_trigger<\/code><\/strong> may not have taken effect as intended.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"786\" height=\"430\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083813\/image-16.png\" alt=\"\" class=\"wp-image-27874\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083813\/image-16.png 786w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083813\/image-16-300x164.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083813\/image-16-768x420.png 768w\" sizes=\"auto, (max-width: 786px) 100vw, 786px\" \/><\/figure>\n\n\n\n<p>During subsequent code analysis, it was confirmed that there was a bug in the implementation of the automatic adjustment mechanism for <code>tidb_server_memory_limit_gc_trigger<\/code>. This bug prevented <code>GOMEMLIMIT<\/code> from being correctly updated, which in turn led to <strong>frequent GC cycles<\/strong> and ultimately caused sustained high CPU usage.<\/p>\n\n\n\n<p>After applying the fix and re-running the tests, monitoring data showed that <strong><code>GOMEMLIMIT<\/code><\/strong>was now adapting as expected, the CPU time percentage of Golang GC stabilized around 2%, and the overall CPU usage of the TiDB instance no longer reached saturation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"412\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083832\/image-17.png\" alt=\"\" class=\"wp-image-27875\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083832\/image-17.png 868w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083832\/image-17-300x142.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083832\/image-17-768x365.png 768w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"850\" height=\"428\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083852\/image-18.png\" alt=\"\" class=\"wp-image-27876\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083852\/image-18.png 850w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083852\/image-18-300x151.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083852\/image-18-768x387.png 768w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"852\" height=\"418\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083909\/image-19.png\" alt=\"\" class=\"wp-image-27877\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/06\/12083909\/image-19.png 852w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083909\/image-19-300x147.png 300w, https:\/\/static.pingcap.com\/files\/2025\/06\/12083909\/image-19-768x377.png 768w\" sizes=\"auto, (max-width: 852px) 100vw, 852px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The TiDB Runtime Dashboard provides comprehensive visibility into the Go Runtime layer, covering key aspects such as memory usage, garbage collection behavior, scheduler latency, and lock contention. With a solid understanding and effective use of these core panels, users can more efficiently identify potential performance issues within TiDB instances\u2014especially when dealing with hard-to-reproduce problems, where runtime metrics often offer crucial diagnostic clues.<\/p>\n\n\n\n<p>In real-world operations and troubleshooting scenarios, we recommend combining business context, monitoring trends, and profiling tools to perform more targeted and efficient analysis.<\/p>\n\n\n\n<p><em><a href=\"https:\/\/tidbcloud.com\/free-trial\/?__hstc=86493575.ff95dbac4fbe967f51f3df3d957eb3e3.1748908180053.1749733563017.1749737131256.43&amp;__hssc=86493575.22.1749737131256&amp;__hsfp=604052937&amp;_gl=1*1quldep*_gcl_au*MTUyNjMzODk1LjE3NDg5MDgxODY.*_ga*NzMzNDU2OTg2LjE3NDg5MDgxODA.*_ga_9FRXHHPYVY*czE3NDk3MzY4MjEkbzQ4JGcxJHQxNzQ5NzQ0MDk2JGo2MCRsMCRoMA..*_ga_3JVXJ41175*czE3NDk3MzY4MjEkbzQ2JGcxJHQxNzQ5NzQ0MDk3JGo1OSRsMCRoMTU5NzAzMzQxOQ..*_ga_ZEL0RNV6R2*czE3NDk3NDIyNzAkbzQ2JGcxJHQxNzQ5NzQzNjU5JGo2MCRsMCRoMA..&amp;website_referrer_url=https:\/\/chatgpt.com\/\">Launch TiDB Cloud<\/a> now to explore TiDB\u2019s full suite of observability features in a live environment.<\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>In TiDB&#8217;s runtime environment, issues related to memory management, garbage collection (GC) behavior, and lock contention at the Go Runtime level can significantly impact system stability and performance. However, such problems are often difficult to reproduce and analyze directly. As a result, high-quality runtime monitoring metrics are essential for effective troubleshooting and performance tuning. This [&hellip;]<\/p>\n","protected":false},"author":104,"featured_media":27828,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[6],"tags":[147,412,53,411,111],"class_list":["post-27825","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","tag-distributed-sql","tag-garbage-collection","tag-go","tag-runtime-dashboard","tag-tidb"],"acf":[],"featured_image_src":"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png","author_info":{"display_name":"Huaiyu Xu","author_link":"https:\/\/www.pingcap.com\/ko\/blog\/author\/huaiyu-xu\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TiDB Runtime Dashboard: A Detailed Analysis with Use Cases<\/title>\n<meta name=\"description\" content=\"In this blog, we&#039;ll explore the TiDB Runtime Dashboard and dissect its practical value in diagnosing runtime issues.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases\" \/>\n<meta property=\"og:description\" content=\"In this blog, we&#039;ll explore the TiDB Runtime Dashboard and dissect its practical value in diagnosing runtime issues.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-12T16:29:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-13T10:22:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2025\/06\/11152434\/tidb_1200x627-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1254\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Huaiyu Xu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/static.pingcap.com\/files\/2025\/06\/11152451\/tidb_twitter_1600x900-1-1-scaled.png\" \/>\n<meta name=\"twitter:creator\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Huaiyu Xu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/\"},\"author\":{\"name\":\"Huaiyu Xu\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/7857f9f7426d9f90e11e6fbd0da7c3ea\"},\"headline\":\"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases\",\"datePublished\":\"2025-06-12T16:29:02+00:00\",\"dateModified\":\"2025-06-13T10:22:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/\"},\"wordCount\":1891,\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png\",\"keywords\":[\"Distributed SQL\",\"Garbage Collection\",\"Go\",\"Runtime Dashboard\",\"TiDB\"],\"articleSection\":[\"Engineering\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/\",\"url\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/\",\"name\":\"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png\",\"datePublished\":\"2025-06-12T16:29:02+00:00\",\"dateModified\":\"2025-06-13T10:22:33+00:00\",\"description\":\"In this blog, we'll explore the TiDB Runtime Dashboard and dissect its practical value in diagnosing runtime issues.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#primaryimage\",\"url\":\"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png\",\"width\":2560,\"height\":853},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.pingcap.com\/#website\",\"url\":\"https:\/\/www.pingcap.com\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.pingcap.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.pingcap.com\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\/\/www.pingcap.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/pingcap2015\",\"https:\/\/x.com\/PingCAP\",\"https:\/\/linkedin.com\/company\/pingcap\",\"https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/7857f9f7426d9f90e11e6fbd0da7c3ea\",\"name\":\"Huaiyu Xu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"caption\":\"Huaiyu Xu\"},\"description\":\"Software Engineer\",\"url\":\"https:\/\/www.pingcap.com\/ko\/blog\/author\/huaiyu-xu\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases","description":"In this blog, we'll explore the TiDB Runtime Dashboard and dissect its practical value in diagnosing runtime issues.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pingcap.com\/ko\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/","og_locale":"ko_KR","og_type":"article","og_title":"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases","og_description":"In this blog, we'll explore the TiDB Runtime Dashboard and dissect its practical value in diagnosing runtime issues.","og_url":"https:\/\/www.pingcap.com\/ko\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_published_time":"2025-06-12T16:29:02+00:00","article_modified_time":"2025-06-13T10:22:33+00:00","og_image":[{"width":2400,"height":1254,"url":"https:\/\/static.pingcap.com\/files\/2025\/06\/11152434\/tidb_1200x627-1.png","type":"image\/png"}],"author":"Huaiyu Xu","twitter_card":"summary_large_image","twitter_image":"https:\/\/static.pingcap.com\/files\/2025\/06\/11152451\/tidb_twitter_1600x900-1-1-scaled.png","twitter_creator":"@PingCAP","twitter_site":"@PingCAP","twitter_misc":{"Written by":"Huaiyu Xu","Est. reading time":"10\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#article","isPartOf":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/"},"author":{"name":"Huaiyu Xu","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/7857f9f7426d9f90e11e6fbd0da7c3ea"},"headline":"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases","datePublished":"2025-06-12T16:29:02+00:00","dateModified":"2025-06-13T10:22:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/"},"wordCount":1891,"publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png","keywords":["Distributed SQL","Garbage Collection","Go","Runtime Dashboard","TiDB"],"articleSection":["Engineering"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/","url":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/","name":"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#primaryimage"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png","datePublished":"2025-06-12T16:29:02+00:00","dateModified":"2025-06-13T10:22:33+00:00","description":"In this blog, we'll explore the TiDB Runtime Dashboard and dissect its practical value in diagnosing runtime issues.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#primaryimage","url":"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png","width":2560,"height":853},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"TiDB Runtime Dashboard: A Detailed Analysis with Use Cases"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]},{"@type":"Person","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/7857f9f7426d9f90e11e6fbd0da7c3ea","name":"Huaiyu Xu","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/","url":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","contentUrl":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","caption":"Huaiyu Xu"},"description":"Software Engineer","url":"https:\/\/www.pingcap.com\/ko\/blog\/author\/huaiyu-xu\/"}]}},"grav_blocks":false,"card_markup":"<a class=\"card-resource bg-white\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/tidb-runtime-dashboard-detailed-analysis-use-cases\/\"><div class=\"card-resource__image-container\"><img class=\"card-resource__image\" alt=\"tidb_feature_1800x600 (1)\" src=\"https:\/\/static.pingcap.com\/files\/2025\/06\/11152411\/tidb_feature_1800x600-1-2-scaled.png\" loading=\"lazy\" width=2560 height=853 \/><\/div><div class=\"card-resource__content-container\"><div class=\"card-resource__content-head\"><div class=\"card-resource__category\">Engineering<\/div><\/div><h5 class=\"card-resource__title\">TiDB Runtime Dashboard: A Detailed Analysis with Use Cases<\/h5><\/div><\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/27825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/104"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/comments?post=27825"}],"version-history":[{"count":51,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/27825\/revisions"}],"predecessor-version":[{"id":27912,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/27825\/revisions\/27912"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media\/27828"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=27825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=27825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=27825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}