RE: Monitoring Virtual Threads via JMX / MBeans in Tomcat

2025-05-20 Thread Rose Mary P T
HI Mark,


Just a gentle reminder regarding my previous message. I’m following up to see 
if there’s any update on this. Please let me know if you need any further 
information from my side.

Looking forward to your response.



Regards,

Rose Mary


From: Rose Mary P T 
Date: Friday, 11 April 2025 at 7:08 PM
To: Tomcat Users List , ma...@apache.org 

Subject: [EXTERNAL] RE: Monitoring Virtual Threads via JMX / MBeans in Tomcat
Dear Tomcat Users/Mark,
I was finally able to retrieve the thread name from the workerThreadName 
attribute in RequestProcessor.tomcatExecutor for a request. In order to observe 
this, the request had to be long-running, which allowed JMX to capture the 
thread’s active state before it completed.
However, I’ve observed that the keepAliveCount remains zero in this setup as 
well. Additionally, the connectionCount appears to reflect the number of 
incoming requests at that moment, but resets to 1 once the request has 
completed processing.
Given this behavior, I’m curious to know whether the formula: (connectionCount 
– keepAliveCount)
is still considered a reliable way to determine the number of virtual threads 
that are created or active at any point in time when using 
useVirtualThreads="true".
I would appreciate any insights or clarifications on this.
Thanks,
Rose Mary


From: Mark Thomas 
Date: Wednesday, 9 April 2025 at 4:12 PM
To: users@tomcat.apache.org 
Subject: [EXTERNAL] Re: Monitoring Virtual Threads via JMX / MBeans in Tomcat


On 03/04/2025 13:05, Rose Mary P T wrote:
> HI Mark,
>
> Thanks for your response.
>
> I would like to seek your guidance regarding an issue I am encountering
> with my current Tomcat setup. Specifically, your recent suggestions
> appear to contradict my existing configuration. Could you kindly confirm
> whether the following executor and connector setup in Tomcat 10.1.36 is
> correct?
>
>  className="org.apache.catalina.core.StandardVirtualThreadExecutor"/>
>
> 
> connectionTimeout="18000" redirectPort="8443"
>
> executor="tomcatExecutor"
>
> useVirtualThreads="true"/>

That should work. Although I do wonder on why you have configured an
executor here. There isn't really any point with virtual threads.

> In my setup, I am using *Http11NioProtocol* exclusively. However, I am
> noticing the following:
>
>   * *keepAliveCount* remains zero.
>   * *connectionCount* is consistently reported as 1.

That suggests that the Tomcat instance isn't processing any requests.

>   * There is no visible value for |RequestProcessor#workerThreadName|.
> Please see the screenshot :

Screenshots don't work on the mailing list. Post it somewhere we can
look at it.

Mark

> *
>
> I would greatly appreciate your insight into this matter, especially if
> the configuration provided requires any adjustments or if there are
> specific conditions I need to be aware of for the virtual threads to
> function as expected.
>
> To clarify your previous question on the deployed application in
> tomcat : This is a simple spring boot application which prints current
> date in a loop of 100
>
> Thank you for your time and assistance. I look forward to your response.
>
> Regards,
>
> Rose Mary
>
> *From: *Mark Thomas 
> *Date: *Thursday, 3 April 2025 at 2:49 PM
> *To: *users@tomcat.apache.org 
> *Subject: *[EXTERNAL] Re: Monitoring Virtual Threads via JMX / MBeans in
> Tomcat
>
> On 28/03/2025 09:08, Rose Mary P T wrote:
>> Hi Mark,
>> Thank you for the confirmation.
>> As per your suggestion, I have modified the deployed application so that it 
>> no longer spawns any threads but instead executes a few calls.
>
> Please clarify what you mean by "executes a few calls".
>
>> Additionally, I kept the previous executor and connection configurations for 
>> Tomcat. However, I still do not see any noticeable changes in the 
>> keepAliveCount attribute. The connectionCount currently shows a value of 1.
>> At this point, I'm unsure of the next troubleshooting steps or what specific 
>> aspects to investigate further. Any guidance on what to focus on next would 
>> be greatly appreciated.
>> Additionally, could you suggest if there is any MBean attribute that can 
>> help identify whether the threads being used are virtual threads or platform 
>> threads?
>
> For Tomcat requests, the current thread name includes "virt" if it is a
> virtual thread. Look at RequestProcessor#workerThreadName for one place
> to see the thread names used for requests
>
> With NIO2, keepAliveCount will always be -1 as it isn't tracked.
> Switching to NIO would make keepAliveCount available.
>
> connectionCount will always be 1 more than the current connections. i.e.
> a value of 1 means there are no current requests.
>
> Mark
>
>
>> Thank you for your continued support.
>>
>> Best Regards,
>> Rose Mary
>>
>>
>> From: Mark Thomas 
>> Date: Thursday, 27 March 2025 at 9:25 PM
>> To: users@tomcat.apache.org 
>> Subject: [EXTERNAL] Re: Monitoring Virtual Threads via JMX / MBeans in Tomcat
>> On 26/03/2025 10:38, Ros

RE: Monitoring Virtual Threads via JMX / MBeans in Tomcat

2025-05-20 Thread Rose Mary P T
HI Mark,


Just a gentle reminder regarding my previous message. I’m following up to see 
if there’s any update on this as its pending for long.

As per your previous suggestion ,I was able to fetch the connectioncount. But 
the KeepAliveCount was always showing as zero. Given this behavior, I’m curious 
to know whether the formula: (connectionCount – keepAliveCount)

Can we consider using ProtocolHandler.connectionCount to fetch the virtual 
threads created instead.

Please let me know if you need any further information from my side.


Looking forward to your response

Regards,
Rose Mary

From: Rose Mary P T 
Date: Tuesday, 20 May 2025 at 4:07 PM
To: Tomcat Users List 
Subject: [EXTERNAL] RE: Monitoring Virtual Threads via JMX / MBeans in Tomcat
HI Mark,


Just a gentle reminder regarding my previous message. I’m following up to see 
if there’s any update on this. Please let me know if you need any further 
information from my side.

Looking forward to your response.



Regards,

Rose Mary


From: Rose Mary P T 
Date: Friday, 11 April 2025 at 7:08 PM
To: Tomcat Users List , ma...@apache.org 

Subject: [EXTERNAL] RE: Monitoring Virtual Threads via JMX / MBeans in Tomcat
Dear Tomcat Users/Mark,
I was finally able to retrieve the thread name from the workerThreadName 
attribute in RequestProcessor.tomcatExecutor for a request. In order to observe 
this, the request had to be long-running, which allowed JMX to capture the 
thread’s active state before it completed.
However, I’ve observed that the keepAliveCount remains zero in this setup as 
well. Additionally, the connectionCount appears to reflect the number of 
incoming requests at that moment, but resets to 1 once the request has 
completed processing.
Given this behavior, I’m curious to know whether the formula: (connectionCount 
– keepAliveCount)
is still considered a reliable way to determine the number of virtual threads 
that are created or active at any point in time when using 
useVirtualThreads="true".
I would appreciate any insights or clarifications on this.
Thanks,
Rose Mary


From: Mark Thomas 
Date: Wednesday, 9 April 2025 at 4:12 PM
To: users@tomcat.apache.org 
Subject: [EXTERNAL] Re: Monitoring Virtual Threads via JMX / MBeans in Tomcat


On 03/04/2025 13:05, Rose Mary P T wrote:
> HI Mark,
>
> Thanks for your response.
>
> I would like to seek your guidance regarding an issue I am encountering
> with my current Tomcat setup. Specifically, your recent suggestions
> appear to contradict my existing configuration. Could you kindly confirm
> whether the following executor and connector setup in Tomcat 10.1.36 is
> correct?
>
>  className="org.apache.catalina.core.StandardVirtualThreadExecutor"/>
>
> 
> connectionTimeout="18000" redirectPort="8443"
>
> executor="tomcatExecutor"
>
> useVirtualThreads="true"/>

That should work. Although I do wonder on why you have configured an
executor here. There isn't really any point with virtual threads.

> In my setup, I am using *Http11NioProtocol* exclusively. However, I am
> noticing the following:
>
>   * *keepAliveCount* remains zero.
>   * *connectionCount* is consistently reported as 1.

That suggests that the Tomcat instance isn't processing any requests.

>   * There is no visible value for |RequestProcessor#workerThreadName|.
> Please see the screenshot :

Screenshots don't work on the mailing list. Post it somewhere we can
look at it.

Mark

> *
>
> I would greatly appreciate your insight into this matter, especially if
> the configuration provided requires any adjustments or if there are
> specific conditions I need to be aware of for the virtual threads to
> function as expected.
>
> To clarify your previous question on the deployed application in
> tomcat : This is a simple spring boot application which prints current
> date in a loop of 100
>
> Thank you for your time and assistance. I look forward to your response.
>
> Regards,
>
> Rose Mary
>
> *From: *Mark Thomas 
> *Date: *Thursday, 3 April 2025 at 2:49 PM
> *To: *users@tomcat.apache.org 
> *Subject: *[EXTERNAL] Re: Monitoring Virtual Threads via JMX / MBeans in
> Tomcat
>
> On 28/03/2025 09:08, Rose Mary P T wrote:
>> Hi Mark,
>> Thank you for the confirmation.
>> As per your suggestion, I have modified the deployed application so that it 
>> no longer spawns any threads but instead executes a few calls.
>
> Please clarify what you mean by "executes a few calls".
>
>> Additionally, I kept the previous executor and connection configurations for 
>> Tomcat. However, I still do not see any noticeable changes in the 
>> keepAliveCount attribute. The connectionCount currently shows a value of 1.
>> At this point, I'm unsure of the next troubleshooting steps or what specific 
>> aspects to investigate further. Any guidance on what to focus on next would 
>> be greatly appreciated.
>> Additionally, could you suggest if there is any MBean attribute that can 
>> help identify whether the threads being used are virtual threads or platform 
>