自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何檢測(cè)Tomcat的狀態(tài)是UP還是DOWN?

開發(fā) 開發(fā)工具
我們?cè)诓榭催M(jìn)程是否存在時(shí),并沒有直接查看對(duì)應(yīng) Web 應(yīng)用的方式, 一般都是查看 Tomcat 的對(duì)應(yīng) Java 進(jìn)程是否在。 如果應(yīng)用沒有響應(yīng)另外再觀察線程棧。那這里有一個(gè)問題,Tomcat 進(jìn)程在的時(shí)候,我們?cè)趺磥砜?Tomcat的狀態(tài)呢?

做為工程師,有些時(shí)候,總會(huì)遇到部署的 Web 應(yīng)用沒有響應(yīng),或者狀態(tài)不對(duì)等各類問題。 對(duì)于部署在 Tomcat 之上的 Java Web 應(yīng)用,一般我們都會(huì)像程咬金一樣,先使出「三板斧」來分析問題。

  • 請(qǐng)求一下
  • 查下進(jìn)程在不在
  • jstack 打下線程棧分析

如何檢測(cè)Tomcat的狀態(tài)是UP還是DOWN?

我們?cè)诓榭催M(jìn)程是否存在時(shí),并沒有直接查看對(duì)應(yīng) Web 應(yīng)用的方式, 一般都是查看 Tomcat 的對(duì)應(yīng) Java 進(jìn)程是否在。 如果應(yīng)用沒有響應(yīng)另外再觀察線程棧。

那這里有一個(gè)問題,Tomcat 進(jìn)程在的時(shí)候,我們?cè)趺磥砜?Tomcat的狀態(tài)呢?

畢竟做為一個(gè)Java 應(yīng)用,只要一啟動(dòng)的時(shí)候就會(huì)創(chuàng)建進(jìn)程。這個(gè)并不能做為 Tomcat 在工作的真實(shí)依據(jù)。 此時(shí)有什么辦法來判斷當(dāng)前 Tomcat 的工作狀態(tài)呢?

一般在做集群內(nèi)容器的心跳狀態(tài)檢測(cè)時(shí)也會(huì)遇到同樣的問題。

這種情況如果 Tomcat 部署了ROOT應(yīng)用,可以通過訪問其指定的頁面來判斷請(qǐng)求是否可達(dá),來確認(rèn) Tomcat 的狀態(tài)。

另外一種方式是通過連接 Tomcat 的 MBeanServer 來確認(rèn)其狀態(tài)。一般情況Tomcat 宕掉了 MBeanServer也會(huì)連接失敗。

前面的文章我們介紹過 JMX 連接到 Tomcat 提供的 MBeanServer 上(你了解JMX在Tomcat的應(yīng)用嗎?),可以執(zhí)行一系列的容器相關(guān)組件的操作,甚至像啟動(dòng)停止 Connector 這些看似「危險(xiǎn)」的操作。

當(dāng)然要通過 JMX URL 連接到 Tomcat MBeanServer 上,是需要在啟動(dòng)腳本中配置參數(shù)啟用。 除此之外,也可以用類似 JConsole 連接到各個(gè) JVM 進(jìn)程的方式,是通過 attach 到 VirtualMachine 后獲取連接的。這個(gè)方式我們后面再寫文章單獨(dú)說。

在在官方的FQA里,還提到了一種實(shí)現(xiàn)檢測(cè)狀態(tài)的方式。

熟悉 Tomcat 配置的朋友都知道, 在一臺(tái)機(jī)器上部署多個(gè) Tomcat 時(shí),經(jīng)常會(huì)有端口沖突的問題, 這是因?yàn)樵?server.xml 里會(huì)配置多個(gè)端口供實(shí)例使用。 除了 Connector 監(jiān)聽的端口外,還有一個(gè) Server 組件使用的端口,默認(rèn)是8005。 多個(gè)實(shí)例之間,除 Connector 端口外,這個(gè)SHUTDOWN 端口也是沖突的。

這里要實(shí)現(xiàn)檢測(cè) Tomcat 狀態(tài)就是通過連接這個(gè)「端口」來實(shí)現(xiàn)。

說到端口,大家***印象一定是 Socket ,這里正是連接到這個(gè)端口對(duì)應(yīng)的ServerSocket上,如果可以正常連接,表示 Tomcat 處于運(yùn)行狀態(tài)。 連接不上Socket 自然是 Tomcat 不可用了。

該端口除了獲取狀態(tài)外,還可以干啥呢? 還可以停止 Tomcat 進(jìn)程,畢竟該端口可是號(hào)稱SHUTDOWN端口啊。

實(shí)現(xiàn)起來也比較簡(jiǎn)單,在 Tomcat 的 SHUTDOWN端口旁邊,還有一個(gè)屬性,做為一個(gè)token,用于識(shí)別來關(guān)閉 Tomcat 的命令。當(dāng) Server 接收到帶有這個(gè)token 的命令時(shí),退出實(shí)例。

完整的實(shí)現(xiàn),需要根據(jù)指定的 Tomcat 安裝目錄,解析配置文件,獲取 SHUTDOWN 端口,以及對(duì)應(yīng)的token,連接對(duì)應(yīng)的 ServerSocket,獲取狀態(tài),執(zhí)行命令。

【本文為51CTO專欄作者“侯樹成”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過作者微信公眾號(hào)『Tomcat那些事兒』獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2011-03-30 15:34:21

POS口PPP

2011-04-01 15:20:08

MP Group

2011-03-30 16:12:27

POS接口光接口

2019-08-15 16:30:49

TomcatSpringBootJava

2023-12-01 14:57:22

TCP連接

2010-05-19 14:26:33

IIS FTP

2022-03-23 08:51:21

線程池Java面試題

2019-12-09 15:08:30

JavaTomcatWeb

2011-09-16 15:51:34

路由器連接故障VSI

2020-04-28 22:58:33

Tomcat架構(gòu)Service

2023-11-29 16:29:09

線程java

2014-05-20 10:55:36

Linux操作系統(tǒng)

2020-11-13 09:57:10

多樣化IT行業(yè)個(gè)性化支持

2021-01-18 05:13:04

TomcatHttp

2017-09-04 18:48:14

TomcatSpringBoot容器

2011-09-16 16:14:23

路由器連接故障VSI

2018-04-03 09:48:29

數(shù)據(jù) 算法

2024-11-28 11:07:50

線程JVM操作系統(tǒng)

2019-09-24 09:46:35

Tomcat連接器Lifecycle

2021-02-04 11:59:10

硬盤SSD數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)