Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not serialize access to gauge objects #143

Merged
merged 1 commit into from
Jun 17, 2022

Conversation

tsegismont
Copy link
Contributor

Fixes #91

Micrometer does not let us access the object that is referenced in a gauge. For this reason, we have to put such objects in a map which keys are the gauge id.
(Note: we have to do this because our gauges are computed dynamically with the provided tags.)

So far, to avoid race conditions, the access to gauges has been serialized. But that comes with an important performance impact.

The solution proposed here consists in using:

  • a non-blocking construct instead of synchronization
  • having a single gaugesTable for all Gauges object instance (multiple Gauges instances can try to create the same gauge concurrently)

Also, sometimes multiples Vert.x instances can be created in the same JVM. A good practice is to provide a name to the registry using MetricsOptions, but if the user does not, the same registry (can be used to store data).
That is why we need to store the gaugesTable in static map in VertxMetricsFactoryImpl.

@tsegismont tsegismont requested a review from jotak June 10, 2022 10:19
@tsegismont
Copy link
Contributor Author

@jotak would mind reviewing this? Thank you

Fixes vert-x3#91

Micrometer does not let us access the object that is referenced in a gauge. For this reason, we have to put such objects in a map which keys are the gauge id.
(Note: we have to do this because our gauges are computed dynamically with the provided tags.)

So far, to avoid race conditions, the access to gauges has been serialized. But that comes with an important performance impact.

The solution proposed here consists in using:

- a non-blocking construct instead of synchronization
- having a single gaugesTable for all Gauges object instance (multiple Gauges instances can try to create the same gauge concurrently)

Also, sometimes multiples Vert.x instances can be created in the same JVM. A good practice is to provide a name to the registry using MetricsOptions, but if the user does not, the same registry (can be used to store data).
That is why we need to store the gaugesTable in static map in VertxMetricsFactoryImpl.

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
tsegismont added a commit to tsegismont/vertx-micrometer-metrics that referenced this pull request Jun 10, 2022
Backport of vert-x3#143

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
tsegismont added a commit to tsegismont/vertx-micrometer-metrics that referenced this pull request Jun 10, 2022
Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
tsegismont added a commit to tsegismont/vertx-micrometer-metrics that referenced this pull request Jun 10, 2022
Backport of vert-x3#143 to 4.2 branch

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
@tsegismont tsegismont removed the request for review from jotak June 17, 2022 08:23
@tsegismont tsegismont merged commit 5a4a10a into vert-x3:master Jun 17, 2022
@tsegismont tsegismont deleted the issue_91 branch June 17, 2022 08:25
tsegismont added a commit to tsegismont/vertx-micrometer-metrics that referenced this pull request Jun 17, 2022
Backport of vert-x3#143 to 4.2 branch

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
tsegismont added a commit that referenced this pull request Jun 17, 2022
Backport of #143 to 4.2 branch

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
tsegismont added a commit that referenced this pull request Jun 17, 2022
Backport of #143

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
tsegismont added a commit to tsegismont/vertx-micrometer-metrics that referenced this pull request Jul 5, 2022
Follows-up on vert-x3#143

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
tsegismont added a commit to tsegismont/vertx-micrometer-metrics that referenced this pull request Jul 5, 2022
Follows-up on vert-x3#143

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
tsegismont added a commit that referenced this pull request Jul 5, 2022
Follows-up on #143

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
tsegismont added a commit that referenced this pull request Jul 5, 2022
Follows-up on #143

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

Performance degradation when metrics is enabled
1 participant