[
https://issues.apache.org/jira/browse/KNOX-2954?focusedWorklogId=974930&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-974930
]
ASF GitHub Bot logged work on KNOX-2954:
----------------------------------------
Author: ASF GitHub Bot
Created on: 17/Jul/25 07:33
Start Date: 17/Jul/25 07:33
Worklog Time Spent: 10m
Work Description: smolnar82 commented on PR #791:
URL: https://github.com/apache/knox/pull/791#issuecomment-3082944210
Thanks, @carrey-feng, for your contribution !
I read the entire description in the JIRA, thank you for the detailed
information.
Once tests succeed, we can merge your PR.
Issue Time Tracking
-------------------
Worklog Id: (was: 974930)
Time Spent: 40m (was: 0.5h)
> 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
>
> Time Spent: 40m
> Remaining Estimate: 0h
>
> 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, the query command is
> {code:java}
> curl -ik -u xx:xx \
> -H "Accept: text/xml" \
> -X GET \
> 'https://localhost:8443/gateway/sandbox/hbase/demo/row[1-9]' {code}
> !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(), httpServletRequest.getPathInfo() value is
> /hbase/demo/row9. When building a service metric name, the parameter of the
> calling InstrUtils.getServiceResourcePath function is RequestLine.getUri(),
> RequestLine.getUri() 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)