วิธี Restart Application Pool บน IIS Windows Server 2022 เพื่อแก้เว็บค้างและเพิ่มประสิทธิภาพ
Application Pool เป็นหนึ่งในองค์ประกอบสำคัญที่สุดของ IIS บน Windows Server 2022 เพราะเป็นตัวควบคุม Process ที่ใช้รันเว็บไซต์และ Web Application
เมื่อเว็บไซต์เริ่มช้า กิน RAM มากผิดปกติ หรือมีปัญหา Error เป็นบางช่วง การ Restart หรือ Recycle Application Pool มักเป็นวิธีแรกที่ผู้ดูแลระบบมืออาชีพใช้แก้ปัญหา เนื่องจากกระทบต่อผู้ใช้งานน้อยกว่าการ Restart IIS ทั้งระบบ
บทความนี้จะอธิบายวิธี Restart Application Pool อย่างถูกต้อง พร้อมแนวทางใช้งานใน Production Environment
🌐 Application Pool คืออะไร
Application Pool คือกลไกที่ IIS ใช้แยกการทำงานของเว็บไซต์แต่ละตัวออกจากกัน
ตัวอย่าง
Website A
ใช้
AppPool_A
และ
Website B
ใช้
AppPool_B
หากเว็บไซต์ A มีปัญหา เว็บไซต์ B จะยังทำงานได้ตามปกติ
🔍 ทำไมต้อง Restart Application Pool
สถานการณ์ที่ควรทำ
✅ เว็บไซต์ค้าง
✅ Memory Leak
✅ Deploy เวอร์ชันใหม่
✅ แก้ไข web.config
✅ ASP.NET Error
✅ CPU สูงผิดปกติ
✅ Worker Process ใช้ RAM มากเกินไป
🚀 Recycle กับ Restart ต่างกันอย่างไร
หลายคนเข้าใจว่าเหมือนกัน
แต่จริง ๆ ต่างกัน
| การทำงาน | Recycle | Stop/Start |
|---|---|---|
| Downtime | ต่ำมาก | สูงกว่า |
| เหมาะกับ Production | ✅ | ⚠️ |
| โหลด Process ใหม่ | ✅ | ✅ |
| ตัด Connection ทันที | ❌ | ✅ |
Production Server ส่วนใหญ่นิยมใช้ Recycle มากกว่า
🚀 วิธี Recycle Application Pool ผ่าน IIS Manager
เปิด
inetmgr
เลือก
Application Pools
เลือก Pool ที่ต้องการ
ตัวอย่าง
comsiam_pool
คลิก
Recycle
ด้านขวา
IIS จะโหลด Worker Process ใหม่โดยแทบไม่กระทบผู้ใช้งาน
🚀 วิธี Restart Application Pool ผ่าน IIS Manager
เลือก Pool
คลิก
Stop
รอ
5-10 วินาที
จากนั้น
Start
🚀 Recycle ผ่าน PowerShell
Import Module
Import-Module WebAdministration
Recycle
Restart-WebAppPool "comsiam_pool"
🚀 Stop Application Pool
Stop-WebAppPool "comsiam_pool"
🚀 Start Application Pool
Start-WebAppPool "comsiam_pool"
🚀 ดูสถานะ Application Pool
Get-WebAppPoolState
ผลลัพธ์
Started
หรือ
Stopped
🚀 Recycle ผ่าน AppCmd
Recycle
appcmd recycle apppool /apppool.name:"comsiam_pool"
Stop
appcmd stop apppool /apppool.name:"comsiam_pool"
Start
appcmd start apppool /apppool.name:"comsiam_pool"
🔍 ตรวจสอบ Worker Process
เปิด IIS Manager
เลือก
Worker Processes
จะเห็น
w3wp.exe
ที่กำลังทำงาน
PowerShell
Get-Process w3wp
⚡ ตั้งค่า Recycle อัตโนมัติ
เปิด
Application Pools
เลือก Pool
คลิก
Recycling
กำหนด
Regular Time Interval
เช่น
1740
นาที
(29 ชั่วโมง)
หรือกำหนดเวลา
02:00 AM
ทุกวัน
🚀 ตั้งค่า Memory-Based Recycle
เมื่อเว็บไซต์ใช้ RAM มากเกินไป
สามารถกำหนด
Private Memory Limit
เช่น
2048 MB
เมื่อถึงค่าที่กำหนด IIS จะ Recycle อัตโนมัติ
🔍 ตรวจสอบ Event หลัง Recycle
เปิด
Event Viewer
ไปที่
Windows Logs
→
Application
ตรวจสอบ Error
ของ
WAS
และ
W3SVC
🚨 Application Pool หยุดเอง
สาเหตุที่พบบ่อย
Identity ผิด
บัญชีไม่มีสิทธิ์เข้าถึงไฟล์
RAM ไม่พอ
Server ใช้ Memory สูงเกินไป
Crash ใน ASP.NET
ตรวจสอบ
Event Viewer
Web.config ผิดพลาด
Syntax Error
ทำให้ Pool ล้มทันที
🚨 Rapid-Fail Protection
IIS มีระบบ
Rapid-Fail Protection
หากเว็บไซต์ Crash หลายครั้ง
Application Pool จะถูกหยุดอัตโนมัติ
ตรวจสอบที่
Advanced Settings
📊 Recycle ควรใช้เมื่อใด
| สถานการณ์ | Recycle |
|---|---|
| Memory Leak | ✅ |
| Deploy Website | ✅ |
| IIS Configuration | ❌ |
| SSL เปลี่ยนใหม่ | ⚠️ |
| Web.config เปลี่ยน | ✅ |
| Website ค้าง | ✅ |
🔒 Best Practices สำหรับ Production
ควร
① แยก Application Pool ทุกเว็บไซต์
② ใช้ Recycle แทน IISRESET
③ ตั้ง Auto Recycle
④ เปิด Logging
⑤ ตรวจสอบ Memory Usage
⑥ ใช้ Dedicated Identity
ทีมงาน comsiam แนะนำให้เว็บไซต์ทุกตัวมี Application Pool ของตนเอง เพราะช่วยแยกปัญหาและเพิ่มความปลอดภัยของระบบ
สำหรับองค์กรที่มีเว็บไซต์จำนวนมาก comsiam มักกำหนด Recycle ช่วงกลางคืนและเปิด Monitoring เพื่อตรวจสอบ Worker Process อย่างต่อเนื่อง ช่วยลดโอกาสเกิด Downtime ได้อย่างมาก
🎯 สรุป
Application Pool เป็นหัวใจสำคัญของ IIS บน Windows Server 2022 และการ Recycle Application Pool ถือเป็นวิธีแก้ปัญหาเว็บไซต์ที่ปลอดภัยและมีผลกระทบน้อยที่สุด
คำสั่งที่นิยมมากที่สุดคือ
Restart-WebAppPool "ชื่อAppPool"
ซึ่งช่วยโหลด Process ใหม่ ลดปัญหา Memory Leak และแก้ปัญหาเว็บค้างได้โดยไม่จำเป็นต้อง Restart IIS ทั้งระบบ