只有累積,沒有奇蹟

2019年3月19日 星期二

[IIS] IIS 站台服務異常中止 - HttpEvent

問題
今天同事反應測試主機 IIS Server 無法使用,進到 QA 主機後發現所有的 IIS 服務都已停止,第一直覺就是到事件檢視器查看是否有異常的 Log 資訊,發現事件檢視器紀錄其中來源  HttpEvent  嫌疑重大以下就針對解決此問題的方式做說明,若有問題歡迎提出一起討論或是給予指導。

解決方案
由於公司測試機對外預設都是以 80 port 為主,無故發生異常是蠻很奇怪,過去經驗如果 IIS 異常終止都會在事件檢視器有紀錄,因此第一步是先到事件檢視器查看是否有蛛絲馬跡,其中來源  HttpEvent  時間與異常時間很接近,其詳細錯誤訊息為 '無法為 [::]:80 繫結到其下的傳輸。IP 只聆聽清單可能包含了到不存在於此電腦介面上的參照。資料欄包含了錯誤數目"  ,從錯誤尋息來看有很大可能是 80 port 遭到佔用而影響到 IIS 服務啟動失敗;接下來是確認目前誰搶走了對外的 80 port,步驟如下

使用 netstat
在 windows 中可以下  netstat  指令查看目前是哪一個 process 在使用指定的 port,使用方式如下
  1. PS D:\> netstat -ano | findstr 0.0:80
  2. TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
可以查看到目前 80 port 是被 processID [4] 佔用,接著我們可以在工作管理員找到 PID 的資訊

工作管理員
開啟 task manager ,切換到詳細服務 tab,根據 PID 排序即可看到 PID 為 4 的 process 為何,當時 debug 狀況發現 NGINX 服務佔用 80 port
處理方式也相當簡單,就兩種方式

服務 : 如果是服務(Service),當下立即到 Service 將 NGINX 停止服務;
執行 : 如果是某個執行檔,可以在 process 按下右鍵,選擇結束工作即可

操作方式如下
在強制停止 NGINX 服務之後,在重啟IIS 即可正常執行

工作管理員 - 開啟欄位
在工作管理員中可以開啟欄位的設定,一般來說我會特別開 PID、命令列等欄位,PID 是為了瞭解目前執行緒的號碼;命令列是拿來分辨 IIS 的執行 w3wp.exe 執行站台為何 (w3wp.exe - testPool,也就是執行檔加上站台Name),其餘就看自己的需求而定,操作方式透過 gif 呈現如下

後記
後來在追原因發現該 Server 在一早有重啟,可能是機器重新啟動時 NGINX 服務一起來就佔用 80 Port,因此 IIS 後續就無法正常使用,由於目前 NGINX 架設上已不須使用,因此還是建議將其服務砍掉避免之後此問題再次發生 :)

參考
80 通訊埠 被佔用(Port 80 required is already in use)解決辦法

Related Posts:

  • [UnitTest] Reflect.cs not found in NUnit問題 最近在新的專案寫 UnitTest 過程中,執行完後 Visual Studio 卻跳出 Source Not Fount : Reflect.cs not found 錯誤,但單元測試還是可以成功,如下圖 且透過 debug UnitTest 時發現測試的值也沒問題,經搜尋後發現是 Visual Studio 2017 IDE 設定問題,將,這篇文章簡單紀錄處理問題過程 處理方式 釐清問題 按下… Read More
  • [WEB API] 使用 Swagger 自動產生 WebAPI 技術文件Swagger 是什麼 以下是 Swagger 官網說明 “ Swagger UI is a collection of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API “  Swagger 是一個可以將你的 API 接口變成可視化的服務,透過 Swag… Read More
  • [UnitTest] Visual Studio 2017 按右鍵無法建立單元測試 ? 問題 最近心血來潮使用家中舊電腦小白寫 Code,在練習測試中發現竟然有點怪異,在要測試的 method 按下右鍵沒有 建立單元測試 Create Unit Test 選項,但相同練習專案拿到公司筆電就是正常的,經比對後發現舊筆電 Visual Studio 版本少安裝測試功能,以下簡單紀錄解決問題的過程 解決方案 在 Visual Studio 2017 早期版本這是已知問題,有開發者在 vs community 回報給開… Read More
  • [.NET] 伺服器認可通訊協定違規. Section=ResponseHeader Detail=CR 必須在 LF 之前問題 公司某個專案是使用 RestSharp 套件進行發送 Request 呼叫第三方的動作,今天在使用時忽然出現沒看過的錯誤訊息 伺服器認可通訊協定違規. Section=ResponseHeader Detail=CR 必須在 LF 之前 ,開發這麼多年來第一次看到此錯誤,筆記一下解決此問題的過程以表示對這問題的重視 處理方式 還原現場  先還原現場 Code 頗單純的,SendRequest 方法使用… Read More
  • [UnitTest] Visual Studio 2017 新增單元測試時沒有 NUnit 選項 ?前言 新筆電總是讓人充滿驚喜,在使用上除了要重新安裝常用的開發工具外,像是 Visual Studio & SQL Server..等必須工具,還有些常用的套件與小工具也要一併安裝,NUnit 是蠻常用的 Test Framwroek 之一,在寫測試時在要測試的 method 下按下右鍵 create Unit Tests,選擇要使用測試的 Test Framework 即可,在測試專案中預設只有 MSTest 選項,如果需要 NUnit… Read More

0 意見:

張貼留言

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com