เท่าที่ฉันรู้เราสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชัน ASP.NET ที่เผยแพร่บน IIS ได้ด้วยวิธีต่างๆ:
- Web Garden: ใช้กระบวนการของผู้ปฏิบัติงานมากกว่า 1 กระบวนการสำหรับ App Pool
- เว็บฟาร์ม: การมีเครื่องมากกว่าหนึ่งเครื่องที่ให้บริการอินสแตนซ์ของแอปพลิเคชันเดียวกัน
- ปรับแต่งไฟล์ ASP.NET web.config
... และบางทีอาจมีคนอื่นที่ฉันไม่รู้ ...
ตัวเลือกที่ 1 และ 2 จำเป็นต้องมีโครงสร้างข้อมูลที่ซับซ้อนเพื่อทำให้เป็นอนุกรม และโหมดสถานะเซสชันเพื่อตั้งค่าเป็นเซิร์ฟเวอร์สถานะหรือเซิร์ฟเวอร์ SQL (โหมด InProc เข้ากันไม่ได้และใช้งานไม่ได้)
ฉันต้องการมุ่งเน้นไปที่ตัวเลือกที่ 1 และ 3:
เกี่ยวกับสวนเว็บ (ตัวเลือกที่ 1) เราตั้งค่ากระบวนการของผู้ปฏิบัติงานมากกว่า 1 กระบวนการสำหรับพูลแอปพลิเคชัน และเราต้องตั้งค่าเซิร์ฟเวอร์สถานะหรือเซิร์ฟเวอร์ sql เป็นโหมดสถานะเซสชัน
ในตัวเลือกที่ 3 เราปรับแต่งไฟล์ web.config ตามที่อธิบายไว้ ที่นี่ โดยการตั้งค่าพารามิเตอร์ เช่น maxWorkerThreads
ตอนนี้เกิดคำถามมากมายในใจ....
ฉันไม่สามารถแยกแยะความแตกต่างระหว่างการตั้งค่ากระบวนการของผู้ปฏิบัติงานมากกว่า 1 กระบวนการสำหรับ App Pool ในตัวเลือก 1 และการตั้งค่า maxWorkerThreads > 1 ในตัวเลือก 3
- ในตัวเลือก 1 คุณมี กระบวนการของผู้ปฏิบัติงาน มากกว่า 1 รายการสำหรับการเข้าร่วมคำขอที่เข้ามา และในตัวเลือก 3 คุณมี หลายเธรด สำหรับการเข้าร่วมคำขอที่เข้ามาแทน ดังนั้นอะไรคือความแตกต่าง
- กระบวนการของผู้ปฏิบัติงาน = เธรด?
- กระบวนการของผู้ปฏิบัติงานสำหรับพูลแอปพลิเคชัน (ตัวเลือก 1 กระบวนการ case #worker > 1) ทำงานและทำงานในลักษณะเดียวกับที่เรามีหลายเธรด (ตัวเลือก 3 case #maxWorkerThreads > 1) หรือไม่
- กระบวนการในตัวเลือก 1 เหมือนกับเธรดในตัวเลือก 3 หรือไม่
- นอกจากนี้ในตัวเลือกที่ 3 มันทำงานอย่างไรเมื่อคุณมี 1 กระบวนการของผู้ปฏิบัติงานสำหรับกลุ่มแอปพลิเคชัน แต่คุณตั้งค่า maxWorkerThreads > 1 ในไฟล์ web.config ไม่ใช่สถานการณ์เดียวกับในตัวเลือกที่ 1 ใช่หรือไม่
- นอกจากนี้ ฉันสามารถใช้โหมดสถานะเซสชัน InProc กับตัวเลือก 3 ได้หรือไม่