การเชื่อมต่อเครือข่ายใดๆ ที่ทำขึ้นระหว่างคอมพิวเตอร์ (โปรโตคอล TCP หรือ UDP) จะทำผ่านพอร์ต ลองนึกภาพสิ่งเหล่านี้เป็นจุดเริ่มต้นหรือเกตเวย์ที่ใช้บริการหรือแอปพลิเคชัน เมื่อมีการเชื่อมต่อไคลเอนต์มากขึ้น พอร์ตจะขาดในการนับ ในโพสต์นี้ เราจะแบ่งปันวิธีแก้ไขปัญหา พอร์ตหมดแรง ประเด็นต่างๆ
พอร์ตมีสองประเภท – พอร์ตไดนามิก และ พอร์ตที่กำหนด . พอร์ตไดนามิกอนุญาตให้ไคลเอนต์หลายเครื่องเชื่อมต่อกับพอร์ตที่กำหนด เว็บไซต์เป็นตัวอย่างที่ดี โดยปกติจะมีพอร์ต 80 ที่กำหนดไว้ แต่ด้วยพอร์ตที่ใช้งานอยู่ พวกเขาสามารถให้บริการลูกค้าได้หลายเครื่อง เนื่องจากพอร์ตไดนามิกมีขีดจำกัด การเชื่อมต่อจะเริ่มล้มเหลวเมื่อพอร์ตทั้งหมดไม่ว่าง เรียกว่าพอร์ตหมดแรง
พอร์ตหมดแรงใน Windows 11/10
แรงจูงใจหลักของคู่มือการแก้ไขปัญหานี้คือการระบุกระบวนการหรือแอปพลิเคชันที่ทำให้พอร์ตหมด เมื่อคุณกำหนดได้แล้ว ขั้นตอนต่อไปคือการแก้ไขแอป
อาการระบุพอร์ตหมดแรง:
1] ไม่สามารถลงชื่อเข้าใช้เครื่องด้วยข้อมูลรับรองโดเมน แต่การลงชื่อเข้าใช้ด้วยบัญชีท้องถิ่นใช้งานได้ เป็นไปได้ว่าบัญชีที่ใช้แล้วอาจใช้งานได้ แต่บัญชีใหม่จะล้มเหลว มันเกิดขึ้นเนื่องจากการแคช
2] การอัปเดตนโยบายกลุ่มจะเริ่มล้มเหลว ทุกครั้งที่คุณลองทำการเปลี่ยนแปลง คุณอาจได้รับข้อผิดพลาดว่า “ล้มเหลวเนื่องจากขาดการเชื่อมต่อเครือข่ายกับตัวควบคุมโดเมน” อาจเป็นเพียงชั่วคราว แต่เป็นสัญญาณ
3] ไม่สามารถเข้าถึงการแชร์ไฟล์หรือไดรฟ์เครือข่ายได้
4] เดสก์ท็อประยะไกลไปยังเซิร์ฟเวอร์ที่โฮสต์แอปพลิเคชันล้มเหลว
สัญญาณอื่นๆ รวมถึงรหัสเหตุการณ์ 4227, 4231 ในตัวแสดงเหตุการณ์สำหรับ TCP พร้อมข้อความว่าการจัดสรรพอร์ตแบบไดนามิกล้มเหลว คำสั่ง NetStat แสดงรายการจำนวนมากสำหรับสถานะ TIME_WAIT สำหรับแอปพลิเคชันเฉพาะ และอื่นๆ
ใช้ NetStat สำหรับ Windows 11/10 และ Windows Server
เปิด Command Prompt พร้อมรับสิทธิ์ยกระดับ
รันคำสั่ง:
netstat -anobq
ถัดไป ตรวจสอบ ID กระบวนการที่มีรายการสูงสุดเป็น BOUND
หากคุณใช้ PowerShell คุณสามารถใช้คำสั่งด้านล่างเพื่อระบุกระบวนการที่มีขอบเขตสูงสุด
Get-NetTCPConnection | Group-Object -Property State, OwningProcess | Select -Property Count, Name, @{Name="ProcessName";Expression={(Get-Process -PID ($_.Name.Split(',')[-1].Trim(' '))).Name}}, Group | Sort Count -Descendin
หลายครั้งที่ไคลเอนต์ปิดพอร์ตไม่ถูกต้อง แม้จะไม่ได้ใช้งาน พอร์ตเหล่านี้ก็ไม่ฟรี เป็นสาเหตุสำคัญประการหนึ่งที่ทำให้พอร์ตหมดแรง
หากมีความจำเป็นบ่อยครั้ง คุณสามารถใช้คำสั่ง Netstat แบบวนซ้ำ . เอาต์พุตสามารถใช้ได้ในไฟล์ข้อความที่สามารถใช้ตรวจสอบแนวโน้มได้ นี่คือลักษณะของสคริปต์:
@ECHO ON
set v=%1
:loop
set /a v+=1
ECHO %date% %time% >> netstat.txt
netstat -ano >> netstat.txt
PING 1.1.1.1 -n 1 -w 60000 >NUL
goto loop
ใช้ตัวจัดการงานเพื่อค้นหาหมายเลขอ้างอิงสูงสุด
วิธีที่เป็นธรรมชาติกว่าเล็กน้อยในการค้นหาแอปพลิเคชันดังกล่าวคือการใช้ตัวจัดการงาน แม้ว่า PowerShell และ Command Prompts จะมีข้อดีของตัวเอง แต่ถ้าคุณต้องการเห็นกระบวนการนี้อย่างรวดเร็ว วิธีนี้เป็นวิธีที่ดีกว่า
- เปิดตัวจัดการงาน และสลับไปที่ แท็บรายละเอียด .
- คลิกขวาที่คอลัมน์ใดก็ได้ แล้วคลิก “เลือกคอลัมน์ ."
- เพิ่ม “Handles” จากตัวเลือกที่มี
- คลิกที่ส่วนหัวของคอลัมน์แฮนเดิลเพื่อจัดเรียงตามจำนวนสูงสุด
Microsoft แนะนำว่าหากการเชื่อมต่อใด ๆ ล้มเหลว ให้ตรวจสอบว่าจำนวนหมายเลขอ้างอิงสูงกว่า 3000 หรือไม่ หากเป็นกรณีนี้ แสดงว่าแอปพลิเคชันเป็นผู้กระทำผิด อย่างไรก็ตาม บริการ OS เป็นข้อยกเว้นสำหรับสิ่งนี้ สำหรับผู้อื่น ให้หยุดกระบวนการนั้น 1 ครั้ง แล้วลองเข้าสู่ระบบโดยใช้ข้อมูลรับรองของโดเมนและดูว่าดำเนินการสำเร็จหรือไม่
ตัวสำรวจกระบวนการ
คุณสามารถใช้ Process Explorer ได้ในกรณีที่ตัวจัดการงานไม่ช่วย มีประโยชน์สำหรับการติดตามปัญหารุ่น DLL หรือจัดการการรั่วไหล และให้ข้อมูลเชิงลึกเกี่ยวกับแอปพลิเคชันรูจ ควรดาวน์โหลด Process Explorer จากที่นี่และติดตั้ง อย่าลืมเรียกใช้ด้วยสิทธิ์ระดับสูง
- คลิกขวาที่ส่วนหัวของคอลัมน์ แล้วเลือก "เลือกคอลัมน์"
- สลับไปที่แท็บประสิทธิภาพ และเพิ่ม Handle Count .
- จากเมนู ให้คลิก มุมมอง> แสดงบานหน้าต่างด้านล่าง .
- คลิกที่เมนูอีกครั้ง เลือก มุมมอง> มุมมองบานหน้าต่างด้านล่าง> แฮนเดิล .
- เรียงลำดับแฮนเดิลจากมากไปหาน้อย
- มันจะเปิดเผยกระบวนการที่มีจำนวนแฮนเดิลสูงสุด
- คลิกเพื่อไฮไลต์หนึ่งในกระบวนการที่มีจำนวนแฮนเดิลสูงสุด
- แผงด้านล่างจะแสดงประเภทของที่จับทั้งหมด พอร์ตหรือซ็อกเก็ตมักจะมีป้ายกำกับ “File \Device\AFD”
ปิดกระบวนการด้วยหมายเลขอ้างอิงจำนวนมาก หากแอปพลิเคชันกลับมา อาจเป็นสาเหตุ และคุณจะต้องแก้ไขแอปพลิเคชันหรือขอให้นักพัฒนาซอฟต์แวร์ของ OEM แก้ไข หากคุณไม่สามารถแก้ไขได้เนื่องจากแอปพลิเคชันต้องการ คุณควรพิจารณาเพิ่มจำนวนพอร์ตที่คอมพิวเตอร์สามารถใช้ได้ คำสั่งด้านล่าง (ตัวอย่าง) สามารถเปลี่ยนช่วงและเพิ่มได้
netsh int ipv4 set dynamicport tcp start=10000 num=1000
พอร์ตเริ่มต้นขั้นต่ำที่สามารถตั้งค่าได้คือ 1025 พอร์ตสิ้นสุดสูงสุดต้องไม่เกิน 65535
ที่กล่าวว่าการแก้ปัญหายังคงชั่วคราว ในฐานะผู้ดูแลระบบไอที คุณจะต้องค้นหาวิธีแก้ไขปัญหาพอร์ตพอร์ตที่ดีกว่า บางครั้ง เซิร์ฟเวอร์หลายเครื่องสามารถใช้เพื่อเพิ่มพอร์ตได้ แต่นั่นเป็นลีกที่ต่างกันโดยสิ้นเชิง