-
Notifications
You must be signed in to change notification settings - Fork 72
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3873 from OpenLiberty/staging
Publish GA release post
- Loading branch information
Showing
6 changed files
with
425 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
--- | ||
layout: post | ||
title: "Java Virtual Threads - A case study" | ||
# Do NOT change the categories section | ||
categories: blog | ||
author_picture: https://avatars3.githubusercontent.com/gjdeval | ||
author_github: https://github.com/gjdeval | ||
seo-title: Java Virtual Threads - A case study - OpenLiberty.io | ||
seo-description: Run your own apps using Java Virtual Threads on Open Liberty but, for now, we won’t be replacing Open Liberty’s existing self-sizing thread pool with virtual threads. InfoQ.com have today published our article about what our performance team found when they compared Java Virtual Threads with Liberty’s autonomic thread pool, including some bugs that are still being investigated with the OpenJDK community. | ||
blog_description: "You can run your own apps using Java Virtual Threads on Open Liberty but, for now, we won’t be replacing Open Liberty’s existing self-sizing thread pool with virtual threads. InfoQ.com have today published our article about what our performance team found when they compared Java Virtual Threads with Liberty’s autonomic thread pool, including some bugs that are still being investigated with the OpenJDK community." | ||
open-graph-image: https://openliberty.io/img/blog/virtualthreads-liberty-throughput.png | ||
open-graph-image-alt: Throughput of virtual threads vs Liberty thread pool. | ||
additional_authors: | ||
- name: Vijay Sundaresan | ||
github: https://github.com/vijaysun-omr | ||
image: https://avatars0.githubusercontent.com/vijaysun-omr | ||
- name: Rich Hagarty | ||
github: https://github.com/rhagarty | ||
image: https://avatars0.githubusercontent.com/rhagarty | ||
- name: Laura Cowen | ||
github: https://github.com/lauracowen | ||
image: https://avatars0.githubusercontent.com/lauracowen | ||
redirect_link: https://www.infoq.com/articles/java-virtual-threads-a-case-study/ | ||
permalink: /blog/redirected.html | ||
--- | ||
= Java Virtual Threads: A case study | ||
Gary DeVal <https://github.com/gjdeval> | ||
//Blank line here is necessary before starting the body of the post. | ||
|
||
You can run your own apps using Java Virtual Threads on Open Liberty but, for now, we won’t be replacing Open Liberty’s existing self-sizing thread pool with virtual threads. | ||
|
||
InfoQ.com have today published our article about what our performance team found when they compared Java Virtual Threads with Liberty’s autonomic thread pool, including some bugs that are still being investigated with the OpenJDK community. | ||
//Add brief summary here that will be displayed in the blog index page and when syndicated to other blog aggregators. | ||
|
||
|
||
// // // // // // // // | ||
// In the preceding section: | ||
// Do not insert any blank lines between any of the lines. | ||
// | ||
// "open-graph-image" is set to OL logo. Whenever possible update this to a more appropriate/specific image (For example if present a image that is being used in the post). However, it | ||
// can be left empty which will set it to the default | ||
// | ||
// "open-graph-image-alt" is a description of what is in the image (not a caption). When changing "open-graph-image" to | ||
// a custom picture, you must provide a custom string for "open-graph-image-alt". | ||
// | ||
// Replace TITLE with the blog post title. | ||
// Replace AUTHOR_NAME with your name as first author. | ||
// Replace GITHUB_USERNAME with your GitHub username eg: lauracowen | ||
// Replace DESCRIPTION with a short summary (~60 words) of the release (a more succinct version of the first paragraph of the post). | ||
// Replace URL_HERE with the URL of the blog post wherever it's hosted (eg the Medium URL) | ||
// | ||
// Replace AUTHOR_NAME with your name as you'd like it to be displayed, eg: Laura Cowen | ||
// | ||
// Example post: 2023-07-21-instanton-foojay.adoc | ||
// | ||
// // // // // // // // |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
--- | ||
layout: post | ||
title: "Enhancements for MicroProfile Metrics and a new training course in 24.0.0.7" | ||
# Do NOT change the categories section | ||
categories: blog | ||
author_picture: https://avatars3.githubusercontent.com/dmuelle | ||
author_github: https://github.com/dmuelle | ||
seo-title: Enhancements for MicroProfile Metrics and a new training course in 24.0.0.7 - OpenLiberty.io | ||
seo-description: The 24.0.0.7 release includes enhancements for histogram and timer metrics in MicroProfile 3.0 and 4.0. Also, a new beginner-level training course is now available to teach you the essentials of cloud native Java application development with Open Liberty. | ||
blog_description: The 24.0.0.7 release includes enhancements for histogram and timer metrics in MicroProfile 3.0 and 4.0. Also, a new beginner-level training course is now available to teach you the essentials of cloud native Java application development with Open Liberty. | ||
open-graph-image: https://openliberty.io/img/twitter_card.jpg | ||
open-graph-image-alt: Open Liberty Logo | ||
--- | ||
= Enhancements for MicroProfile Metrics and a new training course in 24.0.0.7 | ||
David Mueller <https://github.com/dmuelle> | ||
:imagesdir: / | ||
:url-prefix: | ||
:url-about: / | ||
|
||
|
||
|
||
The 24.0.0.7 release includes enhancements for histogram and timer metrics in MicroProfile 3.0 and 4.0. Also, a new beginner-level training course is now available to teach you the essentials of cloud-native Java application development with Open Liberty. | ||
|
||
|
||
In link:{url-about}[Open Liberty] 24.0.0.7: | ||
|
||
* <<mpm, Enhanced histogram, and timer metrics in MicroProfile 3.0 and 4.0>> | ||
* <<course, Learn to develop applications with Open Liberty in the new "Essentials for Cloud-Native Java Application Development" course>> | ||
|
||
|
||
View the list of fixed bugs in link:https://github.com/OpenLiberty/open-liberty/issues?q=label%3Arelease%3A24007+label%3A%22release+bug%22[24.0.0.7]. | ||
|
||
Check out link:{url-prefix}/blog/?search=release&search!=beta[previous Open Liberty GA release blog posts]. | ||
|
||
|
||
[#run] | ||
|
||
|
||
== Develop and run your apps using 24.0.0.7 | ||
|
||
If you're using link:{url-prefix}/guides/maven-intro.html[Maven], include the following in your `pom.xml` file: | ||
|
||
[source,xml] | ||
---- | ||
<plugin> | ||
<groupId>io.openliberty.tools</groupId> | ||
<artifactId>liberty-maven-plugin</artifactId> | ||
<version>3.10.3</version> | ||
</plugin> | ||
---- | ||
|
||
Or for link:{url-prefix}/guides/gradle-intro.html[Gradle], include the following in your `build.gradle` file: | ||
|
||
[source,gradle] | ||
---- | ||
buildscript { | ||
repositories { | ||
mavenCentral() | ||
} | ||
dependencies { | ||
classpath 'io.openliberty.tools:liberty-gradle-plugin:3.8.3' | ||
} | ||
} | ||
apply plugin: 'liberty' | ||
---- | ||
|
||
Or if you're using link:{url-prefix}/docs/latest/container-images.html[container images]: | ||
|
||
[source] | ||
---- | ||
FROM icr.io/appcafe/open-liberty | ||
---- | ||
|
||
Or take a look at our link:{url-prefix}/start/[Downloads page]. | ||
|
||
If you're using link:https://plugins.jetbrains.com/plugin/14856-liberty-tools[IntelliJ IDEA], link:https://marketplace.visualstudio.com/items?itemName=Open-Liberty.liberty-dev-vscode-ext[Visual Studio Code] or link:https://marketplace.eclipse.org/content/liberty-tools[Eclipse IDE], you can also take advantage of our open source link:https://openliberty.io/docs/latest/develop-liberty-tools.html[Liberty developer tools] to enable effective development, testing, debugging, and application management all from within your IDE. | ||
|
||
[link=https://stackoverflow.com/tags/open-liberty] | ||
image::img/blog/blog_btn_stack.svg[Ask a question on Stack Overflow, align="center"] | ||
|
||
// // // // DO NOT MODIFY THIS COMMENT BLOCK <GHA-BLOG-TOPIC> // // // // | ||
// Blog issue: https://github.com/OpenLiberty/open-liberty/issues/28982 | ||
// Contact/Reviewer: tonyreigns | ||
// // // // // // // // | ||
[#mpm] | ||
== Enhanced histogram and timer metrics in MicroProfile 3.0 and 4.0 | ||
|
||
This release introduces MicroProfile Config properties for MicroProfile 3.0 and 4.0 that are used for configuring the statistics that are tracked and outputted by the histogram and timer metrics. These changes are already available in MicroProfile Metrics 5.1. | ||
|
||
In previous MicroProfile Metrics 3.0 and 4.0 releases, histogram and timer metrics tracked only the following values: | ||
|
||
* Min/max recorded values | ||
* The sum of all values | ||
* The count of the recorded values | ||
* A static set of percentiles for the 50th, 75th, 95th, 98th, 99th, and 99.9th percentile. | ||
|
||
These values are output to the `/metrics` endpoint in Prometheus format. | ||
|
||
The new properties can define a custom set of percentiles as well as custom set of histogram buckets for the histogram and timer metrics. Other new configuration properties can enable a default set of histogram buckets, including properties that define an upper and lower bound for the bucket set. | ||
|
||
With these properties, you can define a semicolon-separated list of value definitions that use the following syntax: | ||
|
||
---- | ||
<metric name>=<value-1>[,<value-2>...<value-n>] | ||
---- | ||
|
||
Some properties can accept multiple values for a given metric name, while others can accept only a single value. | ||
|
||
You can use an asterisk (`*`) as a wildcard at the end of the metric name. | ||
|
||
[cols="2*"] | ||
|=== | ||
| Property | Description | ||
| mp.metrics.distribution.percentiles | Defines a custom set of percentiles for matching Histogram and Timer metrics to track and output. Accepts a set of integer and decimal values for a metric name pairing. Can be used to disable percentile output if no value is provided with a metric name pairing. | ||
| mp.metrics.distribution.histogram.buckets| Defines a custom set of (cumulative) histogram buckets for matching Histogram metrics to track and output. Accepts a set of integer and decimal values for a metric name pairing. | ||
| mp.metrics.distribution.timer.buckets| Defines a custom set of (cumulative) histogram buckets for matching Timer metrics to track and output. Accepts a set of decimal values with a time unit appended (`ms`, `s`, `m`, or `h`, for example) for a metric name pairing. | ||
|mp.metrics.distribution.percentiles-histogram.enabled | Configures any matching Histogram or Timer metric to provide a large set of default histogram buckets to allow for percentile configuration with a monitoring tool. Accepts a true/false value for a metric name pairing. | ||
| mp.metrics.distribution.histogram.max-value| When percentile-histogram is enabled for a Timer, this property defines an upper bound for the buckets reported. Accepts a single integer or decimal value for a metric name pairing. | ||
| mp.metrics.distribution.histogram.min-value| When percentile-histogram is enabled for a Timer, this property defines a lower bound for the buckets reported. Accepts a single integer or decimal value for a metric name pairing. | ||
|mp.metrics.distribution.timer.max-value | When percentile-histogram is enabled for a Histogram, this property defines an upper bound for the buckets reported. Accepts a single decimal value with a time unit appended (`ms`, `s`, `m`, or `h`, for example) for a metric name pairing. | ||
|mp.metrics.distribution.timer.min-value | When percentile-histogram is enabled for a Histogram, this property defines a lower bound for the buckets reported. Accepts a single decimal value with a time unit appended (`ms`, `s`, `m`, or `h`, for example) for a metric name pairing. | ||
|
||
|=== | ||
|
||
You can define the `mp.metrics.distribution.percentiles` property similar to the following example. | ||
|
||
---- | ||
mp.metrics.distribution.percentiles=alpha.timer=0.5,0.7,0.75,0.8;alpha.histogram=0.8,0.85,0.9,0.99;delta.*= | ||
---- | ||
|
||
This property creates the `alpha.timer` timer metric to track and output the 50th, 70th, 75th, and 80th percentile values. The `alpha.histogram` histogram metric outputs the 80th, 85th, 90th, and 99th percentile values. Percentiles for any histogram or timer metric that matches with `delta.*` are disabled. | ||
|
||
We'll expand on this example and define histogram buckets for the `alpha.timer` timer metric by using the `mp.metrics.distribution.timer.buckets` property. | ||
|
||
---- | ||
mp.metrics.distribution.timer.buckets=alpha.timer=100ms,200ms,1s | ||
---- | ||
|
||
This configuration tells the metrics runtime to track and output the count of durations that fall within 0-100ms, 0-200ms and 0-1 seconds. This output is due to the histogram buckets working in a _cumulative_ fashion. | ||
|
||
The corresponding prometheus output for the `alpha.timer` metric at the `/metrics` REST endpoint is similar to the following example: | ||
|
||
---- | ||
# TYPE application_alpha_timer_mean_seconds gauge | ||
application_alpha_timer_mean_seconds 2.9700022497975187 | ||
# TYPE application_alpha_timer_max_seconds gauge | ||
application_alpha_timer_max_seconds 5.0 | ||
# TYPE application_alpha_timer_min_seconds gauge | ||
application_alpha_timer_min_seconds 1.0 | ||
# TYPE application_alpha_timer_stddev_seconds gauge | ||
application_alpha_timer_stddev_seconds 1.9997750210918204 | ||
# TYPE alpha_timer_seconds histogram <1> | ||
application_alpha_timer_seconds_bucket{le="0.1"} 0.0 <2> | ||
application_alpha_timer_seconds_bucket{le="0.2"} 0.0 <2> | ||
application_alpha_timer_seconds_bucket{le="1.0"} 1.0 <2> | ||
application_alpha_timer_seconds_bucket{le="+Inf"} 2.0 <2> <3> | ||
application_alpha_timer_seconds_count 2 | ||
application_alpha_timer_seconds_sum 6.0 | ||
application_alpha_timer_seconds{quantile="0.5"} 1.0 | ||
application_alpha_timer_seconds{quantile="0.7"} 5.0 | ||
application_alpha_timer_seconds{quantile="0.75"} 5.0 | ||
application_alpha_timer_seconds{quantile="0.8"} 5.0 | ||
---- | ||
|
||
<1> The Prometheus metric type is `histogram`. Both the quantiles/percentile and buckets are represented under this type. | ||
<2> The `le` tag represents _less than_ and is for the defined buckets, which are converted to seconds. | ||
<3> Prometheus requires that a `+Inf` bucket counts all hits. | ||
|
||
|
||
[#course] | ||
== Learn to develop applications with Open Liberty in the new "Essentials for Cloud-Native Java Application Development" course | ||
|
||
The link:https://cognitiveclass.ai/courses/essentials-for-java-application-development-with-liberty[Essentials for Cloud-Native Java Application Development] course is published on the link:http://cognitiveclass.ai/[cognitiveclass.ai] site. | ||
|
||
This course teaches you the essential skills and technologies to create a basic cloud-native Java application with Open Liberty. You'll learn about REST applications, contexts and dependency injection (CDI), externalizing application configuration, and more. If you score 80% or higher on the final quiz (20 multiple-choice questions), you'll receive the link:https://www.credly.com/org/ibm/badge/liberty-developer-essentials[Liberty Developer Essentials] badge from Credly. | ||
|
||
|
||
// DO NOT MODIFY THIS LINE. </GHA-BLOG-TOPIC> | ||
|
||
|
||
|
||
== Get Open Liberty 24.0.0.7 now | ||
|
||
Available through <<run,Maven, Gradle, Docker, and as a downloadable archive>>. |
Oops, something went wrong.