[ 
https://issues.apache.org/jira/browse/KNOX-2954?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

liang.feng updated KNOX-2954:
-----------------------------
    Summary: Gateway service metric name contain hbase rowkey led to frequently 
full gc  (was: Gateway name of service metric contain hbase rowkey led to 
frequently full gc)

> Gateway service metric name contain hbase rowkey led to frequently full gc
> --------------------------------------------------------------------------
>
>                 Key: KNOX-2954
>                 URL: https://issues.apache.org/jira/browse/KNOX-2954
>             Project: Apache Knox
>          Issue Type: Bug
>          Components: Metrics, Server
>            Reporter: liang.feng
>            Priority: Critical
>         Attachments: image-2023-09-01-16-40-35-876.png, 
> image-2023-09-01-16-49-57-346.png, image-2023-09-01-16-55-30-378.png, 
> image-2023-09-01-17-37-51-597.png, mat_heap_leak_suspects_result.png
>
>
> Our Gateway Server frequently full gc in a few days. I dumped jvm heap and 
> analyzed dump file with mat tool. I found some leak suspects about jmx 
> metric, These leaks occurs in class 
> org.apache.knox.gateway.services.metrics.impl.DefaultMetricsService. 
> This is the analysis result generated by MAT
> !mat_heap_leak_suspects_result.png!
>  
> This is detail of problem Suspect 3
> !image-2023-09-01-16-40-35-876.png!
>  
> I found that many metrics which starting with service contain hbase rowkey by 
> using visualVM tool. These metrics were generted when I used get api to query 
> data from hbase. I think that name of service metric should not contain 
> rowkey.
>  
> This is an example of metric name
> !image-2023-09-01-16-55-30-378.png!
>  
> The reason for this problem is that client and service metric both call the 
> InstrUtils.getServiceResourcePath function to get resource path , but the 
> parameters they use are different when build metric name. Suppose the request 
> url is [https://localhost:8443/gateway/sandbox/hbase/demo/row9. 
> |https://bd-hbase-dev02.zeus.lianjia.com:8443/gateway/sandbox/hbase/demo/row9]When
>  building a client metric name, the parameter of the calling 
> InstrUtils.getServiceResourcePath function is 
> httpServletRequest.getPathInfo(), its value is /hbase/demo/row9. When 
> building a service metric name, the parameter of the calling 
> InstrUtils.getServiceResourcePath function is RequestLine.getUri(), its value 
> is /demo/row9. The purpose of InstrUtils.getServiceResourcePath is to obtain 
> the first two elements of path. So service metric name contains rowkey.
> I think that we should only obtain the first elements of path, when building 
> service metric name.
> The effect after applying the  [pr791|https://github.com/apache/knox/pull/791]
> !image-2023-09-01-17-37-51-597.png!
>  
>  
>  
>  
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to