Improve Network Performance

Improve Network Performance

สำหรับสาย Dev ที่มีการพัฒนา Web application ใช้งาน Internet Information Services (IIS) เป็น Web Server ในระบบปฏิบัติการ Windows 8 และ Windows 2012 นะครับ
ตอนรันทดสอบในเครื่องทดสอบหรือเครื่องตัวเองก็อาจจะไม่พบปัญหา แต่เมื่อ Publish ขึ้น Production อาจะเจอ Error SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted และตามด้วย IP:Port ที่เราเรียกใช้งาน

กรณีนี้อาจเกิดจาก Port ฝั่ง Outbound บนเครื่อง Server เต็มเมื่อมีการ Request จาก Client เป็นจำนวนมาก
สามารถดู Dynamic port ได้โดยใช้ Command

netsh int ipv4 show dynamicport tcp

ส่วนมากจะเป็นกับ Windows 8 และ Windows Server 2012 ซึ่งมีค่า Default ดังนี้

  • MaxUserPort = 1024 - 5000
  • TcpTimedWaitDelay = 4 นาที

MaxUserPort

เป็นค่าที่ใช้ในการระบุจำนวน port สูงสุดที่มีการ Request จาก Application และเชื่อมต่อเข้ามายังฝั่ง Server โดยปกติจะมีค่าอยู่ระหว่าง 1024 ถึง 5000 สามารถเปลี่ยนค่าได้ ดังนี้

  1. เปิด command prompt แล้วรันคำสั่ง regedit
  2. ไปที่ HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\TCPIP\Parameters
  3. สร้างคีย์เป็น REG_DWORD และตั้งชื่อว่า MaxUserPort
  4. ระบุค่าเป็น Decimal 32768 (สูงสุดที่ 65534)

TcpTimedWaitDelay

เป็นค่าที่ใช้ในการระบุระยะเวลาในการ Release หรือ Terminate port เมื่อไม่มีการใช้งานแล้ว โดยปกติค่านี้จะอยู่ที่ 4 นาที สามารถเปลี่ยนค่าได้ ดังนี้

  1. เปิด command prompt แล้วรันคำสั่ง regedit
  2. ไปที่ HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\TCPIP\Parameters
  3. สร้างคีย์เป็น REG_DWORD และตั้งชื่อว่า TcpTimedWaitDelay
  4. ระบุค่าเป็น Decimal 30 (มีหน่วยเป็นวินาที)

Reference:

AKA

BlackDragon