﻿# 在 NLB 執行「清空停止」時如何查詢剩餘使用中連線數目

去年寫過一篇【[精通 NLB：如何有效的執行「清空停止」動作 (含研究心得)](/post/2010/04/12/Master-NLB-How-to-use-drainstop-action.aspx)】文章提到當 NLB Cluster 中的伺服器需要進行 Rolling Update 或 Rolling Reboot 時建議採用 **清空停止** (drainstop)，但是在流量大的時候實在很難預估到底還要多久才能真正讓作用中的連線全部中斷，只能癡癡的等，今天我就分享一個我之前寫的批次檔，可用 nlb 指令列工具幫我們查出到底還有多少連線在這台伺服器上。

我寫了一支短短的批次檔，但是我覺得非常實用，當執行 NLB 的清空停止時，可以在正在清空停止的伺服器上執行以下批次檔，即可在每 2 ~ 3 秒的時間內自動取得目前剩餘的連線數，執行畫面請參考以下圖示：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/10ec501bf454a62652ee-image_596.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2a5107dc1b46ba2913e9-image_597.png)

因為只要有使用者不斷線，那麼清空停止就不會執行完畢，所以這一招並無法真正預估到底還要多久才會完成清空停止，但是至少你可以很明確的知道尚餘多少連線在上面。

其批次檔的程式碼如下，各位複製貼上到 Notepad 再另存成 \*.bat 即可：

> @echo off
> 
> SETLOCAL EnableDelayedExpansion
> 
> for /L %%i in (1, 1, 9999) do (echo !date! !time! && nlb params | findstr 使用中連線數目 && @ping 127.0.0.1 -n 3 -w 1000 > nul )

**相關連結**

-   [精通 NLB：如何有效的執行「清空停止」動作 (含研究心得)](/post/2010/04/12/Master-NLB-How-to-use-drainstop-action.aspx)
-   [NLB 常用命令提示字元 (Command Prompt) 指令操作筆記](/post/2011/01/02/Microsoft-NLB-Command-Prompt-Notes.aspx)
-   [精通 NLB：單點傳播(Unicast) 與 多點傳送(Multicast) 的差異](/post/2010/01/15/Master-NLB-Compare-Unicast-Multicast.aspx)
