英文:
Resquest time included STW (Garbage Collection) time in Java (Tomcat)
问题
在Catalina JMX中是否有用于度量请求时间的指标,包括垃圾回收时间(如果适用)?
我知道有关垃圾回收时间的指标,但我正在寻找反映JVM内端到端请求时间的指标。
非常感谢。
JVM内端到端请求时间的JMX指标。
英文:
Are there any request time metric in catalina jmx, that account Garbage Collection time (if apply)?
I know the metrics for GC time but i am searching for something that reflects the request time end to end inside JVM.
Thanks a lot.
JMX metric for request time end to end inside JVM.
答案1
得分: 1
在https://tomcat.apache.org/tomcat-8.5-doc/config/http.html中,我读到:
"连接被排队在由Connector创建的服务器套接字中,直到有可用线程来处理连接。一旦达到maxConnections,操作系统将排队进一步的连接。操作系统提供的连接队列的大小可以通过acceptCount属性来控制。如果操作系统队列已满,进一步的连接请求可能会被拒绝或超时。默认值为100。"
以及:
"acceptCount:当达到maxConnections时,用于传入连接请求的操作系统提供的队列的最大长度。操作系统可能会忽略此设置并使用不同大小的队列。当此队列已满时,操作系统可能积极拒绝额外的连接或这些连接可能会超时。默认值为100。"
因此,队列池位于JVM之外,没有与之相关的JMX指标,因此不可能包括停顿时间在内的请求时间指标。
我们可以通过以下命令来监视操作系统中的队列池:
ss -lt sport 10432
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 100 *:10432 *:*
在上面的示例中,Tomcat正在监听端口10432。有一个100个连接池限制,队列中没有连接。当在Listen状态端口上执行该命令时,Recv-Q和Send-Q反映了队列池中的连接和队列池中的最大连接数。
我执行了以下命令:
while true ;do
ss -lt sport 10432
done
并且当进行全垃圾收集时,队列池会增加,因此非常重要监视垃圾收集花费的时间指标。
谢谢。
英文:
In https://tomcat.apache.org/tomcat-8.5-doc/config/http.html I read:
> "Connections are queued inside the server socket created by the
> Connector until a thread becomes available to process the connection.
> Once maxConnections has been reached the operating system will queue
> further connections. The size of the operating system provided
> connection queue may be controlled by the acceptCount attribute. If
> the operating system queue fills, further connection requests may be
> refused or may time out."
And:
> "acceptCount The maximum length of the operating system provided
> queue for incoming connection requests when maxConnections has been
> reached. The operating system may ignore this setting and use a
> different size for the queue. When this queue is full, the operating
> system may actively refuse additional connections or those connections
> may time out. The default value is 100."
So the queue pool is "outside" JVM and there isn't any JMX metric for it, therefore request time metric that include stop-the-world time is not posible.
What whe can do is to monitor queue pool from the operating system with next command:
ss -lt sport 10432
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 100 *:10432 *:*
In above example, Tomcat is listening in port 10432. Have a 100 queue connection pool limit and 0 connections in queue. Recv-Q and Send-Q reflects connections in queue pool and Max connections in queue pool respectively when the command is issue in a Listen state port.
I did Next command:
while true ;do
ss -lt sport 10432
done
And queue pool increase when full Garbage Collection take place so it's very important to put an eye in Garbage Collection spent time metric.
Thanks.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论