1. 程式人生 > >伺服器基礎 tomcat埠被佔用問題的解決

伺服器基礎 tomcat埠被佔用問題的解決

    今天上午部署專案時發現8080埠已被佔用。我知道只要在tomcat安裝目錄的conf資料夾下把service.xml檔案中的埠號改成其他的就可以:
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
把8080改成其他的如:8088.但是本著“不僅要知其然,還要知其所以然”的原則,我想為什麼我要妥協?埠號被佔用憑什麼就要我這個專案來改,8080究竟被誰佔用了?
    於是我在網上找了一些資料,說的很詳細。比如QQ音樂、迅雷或者其他的一些類似的東西都會佔用埠號的,開啟cmd檢視一下埠的使用情況

1.開啟cmd

2.查詢埠號的PID:netstat -a -o(有了PID可以看看到底是被哪個個應用程式佔用的)

3.強行關閉 ntsd -c q -p PID(查詢出來的PID號碼)

結果發現是昨天新裝的Oracle在作祟。原來,8080埠被佔用一般是由於Oracle內建的HTTP服務的Tomcat佔用了8080埠,所以才出現了上述情況。那麼我們就可以在工作管理員中把Oracle.exe停止,或者利用OracleDatabase Configuration Asistant禁用或修改Oracle XDB埠
tomcat埠被佔用問題的解決

P S:netstat命令是幹什麼的?
netstat命令的功能是顯示網路連線、路由表和網路介面資訊,可以讓使用者得知目前都有哪些網路連線正在運作。

該命令的一般格式為:

netstat [選項]

命令中各選項的含義如下:

-a 顯示所有socket,包括正在監聽的。
-c 每隔1秒就重新顯示一遍,直到使用者中斷它。
-i 顯示所有網路介面的資訊,格式同“ifconfig -e”。
-n 以網路IP地址代替名稱,顯示出網路連線情形。
-r 顯示核心路由表,格式同“route -e”。
-t 顯示TCP協議的連線情況。
-u 顯示UDP協議的連線情況。
-v 顯示正在進行的工作。

-A 顯示任何關聯的協議控制塊的地址。主要用於除錯
-a 顯示所有套接字的狀態。在一般情況下不顯示與伺服器程序相關聯的套接字
-i 顯示自動配置介面的狀態。那些在系統初始引導後配置的介面狀態不在輸出之列
-m 列印網路儲存器的使用情況
-n 列印實際地址,而不是對地址的解釋或者顯示主機,網路名之類的符號
-r 列印路由選擇表
-f address -family對於給出名字的地址簇列印統計數字和控制塊資訊。到目前為止,唯一支援的地址簇是inet
-I interface 只打印給出名字的介面狀態
-p protocol-name 只打印給出名字的協議的統計數字和協議控制塊資訊
-s 列印每個協議的統計數字
-t 在輸出顯示中用時間資訊代替佇列長度資訊。

netstat命令的列標題
Name 介面的名字
Mtu 介面的最大傳輸單位
Net/Dest 介面所在的網路
Address 介面的IP地址
Ipkts 接收到的資料包數目
Ierrs 接收到時已損壞的資料包數目
Opkts 傳送的資料包數目
Oeers 傳送時已損壞的資料包數目
Collisions 由這個介面所記錄的網路衝突數目

netstat的一些常用選項:
netstat -s–本選項能夠按照各個協議分別顯示其統計資料。如果你的應用程式(如Web瀏覽器)執行速度比較慢,或者不能顯示Web頁之類的資料,那麼你就可以用本選項來檢視一下所顯示的資訊。你需要仔細檢視統計資料的各行,找到出錯的關鍵字,進而確定問題所在。
netstat -e–本選項用於顯示關於乙太網的統計資料。它列出的專案包括傳送的資料報的總位元組數、錯誤數、刪除數、資料報的數量和廣播的數量。這些統計資料既有傳送的資料報數量,也有接收的資料報數量。這個選項可以用來統計一些基本的網路流量)。
netstat -r–本選項可以顯示關於路由表的資訊,類似於後面所講使用route print命令時看到的 資訊。除了顯示有效路由外,還顯示當前有效的連線。
netstat -a–本選項顯示一個所有的有效連線資訊列表,包括已建立的連線(ESTABLISHED),也包括監聽連線請求(LISTENING)的那些連線。
bnetstat -n–顯示所有已建立的有效連線。
« AWKPHP經典 »netstat -an中state含義

netstat -an中state含義
LISTEN:偵聽來自遠方的TCP埠的連線請求
SYN-SENT:再發送連線請求後等待匹配的連線請求
SYN-RECEIVED:再收到和傳送一個連線請求後等待對方對連線請求的確認
ESTABLISHED:代表一個開啟的連線
FIN-WAIT-1:等待遠端TCP連線中斷請求,或先前的連線中斷請求的確認
FIN-WAIT-2:從遠端TCP等待連線中斷請求
CLOSE-WAIT:等待從本地使用者發來的連線中斷請求
CLOSING:等待遠端TCP對連線中斷的確認
LAST-ACK:等待原來的發向遠端TCP的連線中斷請求的確認
TIME-WAIT:等待足夠的時間以確保遠端TCP接收到連線中斷請求的確認
CLOSED:沒有任何連線狀態
其實可以man netstat , 看其中的stat部分解釋

State
The state of the socket. Since there are no states in raw mode and usually no states used in UDP, this column may be left
blank. Normally this can be one of several values:
ESTABLISHED
The socket has an established connection.
SYN_SENT
The socket is actively attempting to establish a connection.
SYN_RECV
A connection request has been received from the network.
FIN_WAIT1
The socket is closed, and the connection is shutting down.
FIN_WAIT2
Connection is closed, and the socket is waiting for a shutdown from the remote end.
TIME_WAIT
The socket is waiting after close to handle packets still in the network.
CLOSED The socket is not being used.
CLOSE_WAIT
The remote end has shut down, waiting for the socket to close.
LAST_ACK
The remote end has shut down, and the socket is closed. Waiting for acknowledgement.
LISTEN The socket is listening for incoming connections. Such sockets are not included in the output unless you specify
the –listening (-l) or –all (-a) option.
CLOSING
Both sockets are shut down but we still don’t have all our data sent.
UNKNOWN
The state of the socket is unknown.

相關推薦

伺服器基礎 tomcat佔用問題的解決

今天上午部署專案時發現8080埠已被佔用。我知道只要在tomcat安裝目錄的conf資料夾下把service.xml檔案中的埠號改成其他的就可以: <Connector port="8080" protocol="HTTP/1.1"

Eclipse啟動Tomcat佔用解決方法

啟動Tomcat報以下錯誤: 【Several ports (8005, 8080, 8009) required by Tomcat v8.0 Server at localhost are alr

mac電腦上tomcat佔用解決辦法

假如被佔用的埠時8080 那麼在終端上輸入:   lsof -i:8080       如圖: 然後根據提示資訊輸入: kill -9 13016      這裡的13016就是java後面的那

解決tomcat佔用問題

轉自:http://blog.csdn.net/donggege214/article/details/46469497 今天剛開始調JSP網站,還好好的,後來中間登出了電腦一次, 再開啟除錯它,就遇到了這個 無法啟動伺服器的問題: Destroying Prot

如何解決Tomcat佔用問題

本文旨在解決在不關機重啟的情況下解決Tomcat埠被佔用問題 1.在DOS下鍵入netstat   -ano|findstr  8080 檢視佔用8080埠的程序 2.鍵入taskkill  

解決Tomcat佔用

有時候啟動Tomcat的時候會提示Address localhost:8080 is already in use. 1、第一種情況是8080埠被其他服務佔用。 解決辦法: 找到Tomcat解壓目錄\conf\server.xml檔案,用文字編

Mac下Eclipse內建Tomcat佔用問題的解決辦法

問題描述: mac下的Eclipse中內建的Tomcat,啟動時報一下錯誤: Several ports (8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.

【轉載】tomcat佔用問題完美解決方案!

https://www.cnblogs.com/hjchoset/p/6027589.html  啟動Tomcat伺服器報錯:Several ports (8005, 8080, 8009) requi

解決tomcat佔用的問題

問題截圖:原因分析:有時候專案比較大,而eclipse沒有完全停止tomcat的情況下,下次啟動時可能會出現埠被佔用而導致無法啟動的現象解決方案:step1:快捷鍵Win+R後輸入cmdstep2:輸入以下程式碼 netstat -ano,找到對應的埠號,這裡以8080和80

mac 下解決tomcat佔用問題

網上看了很多辦法,大部分都是通過在terminal輸入lsof -i :<埠號>來檢視埠對應的程序pid,再殺死程序。但是這個方法對於10.10以上的系統不管用,輸入以上命令是沒有反應的。我的mac os系統是10.12.6,需要通過以下方法:終端輸入(如埠號為8

關於JavaWeb中Tomcat佔用解決方法

今天想用javaweb寫點東西,在EclipseEE中又出現了tomcat無法啟動的情況,報錯如下圖。 上一次出現,我以為是專案的問題,調了半天專案,把servlet刪了重新匯入,各種折騰,不知道怎麼就弄好了,這次很明顯專案沒法弄,好久沒用過了,我

tomcat 8080佔用解決辦法

1. win + R,輸入cmd回車進入dos介面 (需要使用系統管理許可權開啟dos介面,否則殺死不了程序) 2. 輸入netstat -ano|findstr 8080 檢視佔用8080埠的程序  3. 輸入tas

解決windows下tomcat佔用

有時候電腦比較卡,專案比較大的情況下,eclipse沒有完全停止tomcat的情況下,下次啟動會出現tomcat的埠被佔用無法啟動的情況,主要報如下錯誤 解決方案 window下開啟命令視窗(

Tomcat佔用詳細解決方案

    Tomcat的埠號常常由於各種原因被佔用了,但是我們也要跑自己的專案,那怎麼辦呢,讓我來教你怎麼辦吧!第一步:啟動工作管理員    右鍵點選電腦下方橫向的面板,會彈出一個框,在框裡找到”啟動工作

啟動Tomcat服務報錯,佔用解決方案

啟動Tomcat伺服器報錯:Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are already in use. The server may already be

JavaWeb: 解決tomcat佔用

【一種】: Ⅰ:cmd → netstat -ano → 記下埠為你tomcat埠(如8080)的PID Ⅱ:工作管理員 → 程序 → 檢視 → 選擇列 → 勾選PID → 確定 → 點PID列按PID排序 → 結束剛找到的PID的程序,(一般會是JAVAW程序)

tomcat 佔用,pid查詢

開啟cmd命令視窗 輸入 netstat -ano,回車 然後到工作管理員哪裡,殺死程序 下面我會分兩個平臺(windows,linux)來進行詳細說明 windows 系統 通過如下命令查詢佔用指定埠的pid(程序id) netstat -ano|findstr <

Linux佔用解決

埠被佔用 1.檢視佔用埠的程序netstat -lnp|grep 6379 tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 816/redis-server 0. 2.檢視程序資訊 p

80佔用解決辦法

1、進入CMD,輸入netstat -ano就可以很清楚的看到80口占用程式的PID 2、去工作管理員裡查詢到PID所對應的程序(如果工作管理員沒有PID,檢視–>選擇列) 3、一般會被pid 4 system佔用,而且無法在工作管理員中結束任務   解決辦法:以管理員身份開啟cmd->輸入

Tomcat 佔用

win+R +Enter 進入命令列 1.檢視佔用埠的服務的PID,以“8080”為例 netstat  -ano |findstr "8080" 2.找到其PID (最後一列),假如為“4400”,kill此服務 taskkill   /pid   4400  /f