กลุ่มแอป IIS กระบวนการของผู้ปฏิบัติงานโดเมนแอป


88

ใครสามารถอธิบายความแตกต่างใน IIS ระหว่างกลุ่มแอปพลิเคชันกระบวนการของผู้ปฏิบัติงานและโดเมนแอป นอกจากนี้พวกเขาทำงานร่วมกันอย่างไร? ฉันได้อ่านบทความสองสามบทความ แต่ก็ยังสับสนเล็กน้อย

  1. แต่ละเว็บไซต์ที่สร้างใน IIS กลายเป็นแอปพลิเคชันหรือไม่?
  2. แต่ละแอปพลิเคชันเกี่ยวข้องกับกระบวนการของผู้ปฏิบัติงานหรือไม่
  3. โดเมนของแอปเข้ามาในรูปภาพที่ไหน

คำตอบ:


103

ฉันพยายามพูดด้วยคำอื่น

ในเซิร์ฟเวอร์คุณสามารถมีไซต์ asp.net จำนวนมากที่ทำงานร่วมกัน แต่ละเว็บไซต์หนึ่งเป็นโดเมนแอป

คุณต้องกำหนดให้แต่ละของพวกเขาเป็นหนึ่งในแอพลิเคชัน โดเมนแอปพลิเคชันจำนวนมาก (ไซต์) สามารถมีพูลแอปพลิเคชันเดียวกันและเนื่องจากมีพูลแอปพลิเคชันเดียวกันจึงทำงานภายใต้กระบวนการเดียวกันและอยู่ภายใต้บัญชีเดียวกันและมีการตั้งค่าพูลที่เหมือนกัน หากพูลนี้รีสตาร์ทไซต์ทั้งหมดในพูลนั้นจะรีสตาร์ท

ตอนนี้แต่ละพูลสามารถมีกระบวนการผู้ปฏิบัติงานได้ตั้งแต่หนึ่งกระบวนการขึ้นไป กระบวนการของผู้ปฏิบัติงานแต่ละคนเป็นโปรแกรมที่แตกต่างกันซึ่งเรียกใช้ไซต์ของคุณมีตัวแปรคงที่เพียงอย่างเดียวพวกเขาเริ่มหยุดการโทรที่แตกต่างกัน ฯลฯ กระบวนการของผู้ปฏิบัติงานที่แตกต่างกันจะไม่สื่อสารกันและวิธีเดียวที่จะแลกเปลี่ยนข้อมูลคือจากไฟล์ทั่วไปหรือฐานข้อมูลทั่วไป หากคุณมีกระบวนการของผู้ปฏิบัติงานมากกว่าหนึ่งกระบวนการและหนึ่งในนั้นทำการคำนวณเป็นเวลานานกระบวนการอื่น ๆ สามารถจัดการการโทรทางอินเทอร์เน็ตและแสดงเนื้อหาได้

เมื่อคุณกำหนดกระบวนการของผู้ปฏิบัติงานจำนวนมากให้กับกลุ่มเดียวคุณจะสร้างเว็บการ์เด้นที่เรียกว่าและไซต์ของคุณจะถูกเรียกใช้จากคอมพิวเตอร์มากกว่าหนึ่งเครื่องหากคอมพิวเตอร์เป็นเครื่องประมวลผลหนึ่งเครื่อง

โดเมนแอปพร้อมพูลและกระบวนการ

แต่ละกระบวนการของผู้ปฏิบัติงานสามารถมีหลายเธรด

กระบวนการของผู้ปฏิบัติงานมากขึ้นส่งผลต่อคุณอย่างไร:
เมื่อคุณมีผู้ปฏิบัติงานหนึ่งคนกระบวนการทุกอย่างจะง่ายขึ้นในบรรดาแอปพลิเคชันของคุณตัวแปรคงที่เหมือนกันทั้งหมดและคุณใช้lockเพื่อซิงโครไนซ์
เมื่อคุณกำหนดกระบวนการของผู้ปฏิบัติงานมากกว่าหนึ่งกระบวนการคุณยังคงใช้lockสำหรับตัวแปรคงที่ตัวแปรคงที่จะไม่แตกต่างกันในการรันไซต์ของคุณจำนวนมากและหากคุณมีทรัพยากรร่วมกัน (เช่นการสร้างภาพขนาดย่อบนดิสก์) Mutexแล้วคุณจะต้องประสานกระบวนการทำงานของคุณด้วย

อีกหนึ่งบันทึก ฟังดูแล้วว่าเมื่อคุณสร้างกระบวนการของผู้ปฏิบัติงานมากขึ้นคุณอาจโหลดเพจแบบอะซิงโครนัสได้อย่างราบรื่นมากขึ้น มีปัญหาเล็กน้อยเกี่ยวกับตัวจัดการเซสชันของ asp.net ที่ล็อกกระบวนการทั้งหมดสำหรับการโหลดหน้าซึ่งเป็นสิ่งที่ดีและไม่ดีขึ้นอยู่กับว่าคุณรู้และจัดการได้หรือไม่หรือเปลี่ยนแปลง

ดังนั้นให้พูดถึงไซต์เดียวกับกระบวนการของผู้ปฏิบัติงานจำนวนมาก Mutexที่นี่คุณต้องเผชิญกับปัญหาที่คุณจะต้องประสานการเปลี่ยนแปลงทรัพยากรร่วมกันของคุณด้วย แต่เพจ / ตัวจัดการที่ใช้เซสชันจะไม่อะซิงโครนัสเนื่องจากเซสชันล็อกไว้ นี่เป็นสิ่งที่ดีสำหรับการเริ่มต้นเพราะคุณหลีกเลี่ยงที่จะทำการซิงโครไนซ์หลาย ๆ จุดด้วยตนเอง

คำถามบางข้อในหัวข้อนี้:
เว็บแอปถูกบล็อกขณะประมวลผลเว็บแอปอื่นในการแชร์เซสชันเดียวกัน
jQuery Ajax เรียกใช้บริการเว็บดูเหมือนว่า
เซิร์ฟเวอร์ ASP.NET แบบซิงโครนัสไม่ประมวลผลเพจแบบอะซิงโครนัส
แทนที่เซสชันของ ASP.Net ทั้งหมด

ตอนนี้การล็อกเซสชันนี้ไม่ส่งผลต่อไซต์ต่างๆ

ในบรรดาไซต์ต่างๆกระบวนการทำงานที่มากขึ้นสามารถช่วยไม่ให้ไซต์หนึ่งบล็อกอีกไซต์หนึ่งด้วยกระบวนการทำงานที่ยาวนาน
นอกจากนี้ในไซต์ต่างๆยังมีพูลที่สามารถช่วยได้อีกด้วยเนื่องจากแต่ละพูลมีกระบวนการทำงานอย่างน้อยหนึ่งกระบวนการ แต่อย่าลืมและดูด้วยตัวคุณเองโดยใช้ตัวสำรวจกระบวนการแต่ละกระบวนการทำงานใช้หน่วยความจำของคอมพิวเตอร์ของคุณมากกว่าและเซิร์ฟเวอร์ขนาดใหญ่หนึ่งเซิร์ฟเวอร์ที่มีหน่วยความจำ 16G และเซิร์ฟเวอร์ SQL หนึ่งตัวไม่สามารถมีกระบวนการทำงานที่แตกต่างกันมากเกินไปตัวอย่างเช่นบนเซิร์ฟเวอร์ที่มีไซต์ที่ใช้ร่วมกัน 100 ไซต์คุณไม่สามารถมีพูลที่แตกต่างกันได้ 100 พูล


ฉันพบว่ามันแตกต่างจากวิธีที่ IIS 5 จัดการเมื่อเทียบกับ IIS 6 ขึ้นไป ดังนั้นใน IIS 5 คุณมีกระบวนการ Worker เดียวและโดเมนแอปหลายโดเมนเมื่อเทียบกับ IIS 6 คุณมีกระบวนการของผู้ปฏิบัติงานหลายขั้นตอน (w3wp.exe) หนึ่งกระบวนการสำหรับแต่ละกลุ่มแอปพลิเคชันใน IIS 6.0 inetinfo จะเปลี่ยนเส้นทางไปยังกระบวนการของผู้ปฏิบัติงานที่แตกต่างกันโดยขึ้นอยู่กับคำขอ ฉันอยู่ตรงนี้เหรอ? นี่คือที่มาของฉันdotnetslackers.com/articles/iis/…
ราวี

@ user460103 ใช่ iis5 มีกระบวนการทำงานเพียงขั้นตอนเดียว (โดเมนของแอปหลายโดเมนสามารถมีได้เฉพาะกับการแฮ็กขนาดเล็ก แต่ไม่สามารถทำงานร่วมกันได้) เมื่อคุณมีกระบวนการทำงานของผู้ปฏิบัติงานจำนวนมากในไซต์เดียวใช่ iis6 สามารถเปลี่ยนเส้นทางคุณไปยังกระบวนการของผู้ปฏิบัติงานอื่นได้
Aristos

IIS สร้างกระบวนการใหม่สำหรับทุกคำขอทางเว็บหรือไม่ หรือว่าปั่นกระทู้ใหม่?
ตัวแปร

@variable ปั่นด้ายใหม่ - กระบวนการจะอยู่และทำงานตลอดเวลาหรือรีไซเคิลตามที่คุณตั้งไว้ในสระว่ายน้ำ ...
Aristos

ตกลงถ้ามีหลายกระบวนการแล้วเซสชันทำงานอย่างไร - ฉันคิดว่าเซสชันเป็นต่อกระบวนการ
ตัวแปร

18
  • เซิร์ฟเวอร์ IIS หนึ่งเครื่องอาจมีแอปพลิเคชันพูลหลายตัว
  • หนึ่งเว็บแอปพลิเคชันผูกกับแอปพลิเคชันพูลเดียว
  • แอปพลิเคชันพูลหนึ่งอาจมีกระบวนการของผู้ปฏิบัติงานมากกว่าหนึ่งกระบวนการ (เมื่อเปิดใช้งาน Web Garden)
  • กระบวนการของผู้ปฏิบัติงานหนึ่งคนสามารถมีโดเมนแอปได้หลายโดเมน โดเมนของแอปเดียวอยู่ในกระบวนการของผู้ปฏิบัติงานเดียวเท่านั้น
  • โดเมนแอปหนึ่งอาจมีหลายเธรด สามารถแชร์เธรดหนึ่งรายการโดยโดเมนแอปต่างๆในเวลาที่ต่างกัน

ความหมายสำหรับนักพัฒนา ASP.NET: เพื่อทำให้เว็บไซต์ของคุณปรับขนาดได้อย่าใช้เซสชัน in-proc และอย่าใช้การล็อกตัวแปรคลาสแบบคงที่สำหรับการซิงโครไนซ์


7
  1. ใช่แม้ว่าไม่ใช่ทุกแอปพลิเคชันจะเป็นเว็บไซต์ คุณสามารถมีแอปพลิเคชันที่ซ้อนอยู่ใต้เว็บไซต์ได้

  2. ใช่ทุกแอปพลิเคชันจะต้องมีกระบวนการของผู้ปฏิบัติงานหนึ่งคน (กลุ่มแอปพลิเคชัน) แม้ว่ากลุ่มแอปพลิเคชันหนึ่งสามารถเซิร์ฟเวอร์ได้หลายแอปพลิเคชัน สามารถเผยแพร่เว็บแอปพลิเคชันเดียว (สวนเว็บ / ฟาร์ม) ซึ่งหมายความว่าจะทำงานในหลายกระบวนการ

  3. แต่ละกระบวนการจะทำงานในโดเมนแอปของตนเอง (ทุกแอปพลิเคชันพูลเป็นโดเมนแอปแยกต่างหาก)


จาก MSDN.

สร้างโปรแกรมประยุกต์บนเว็บ :

แอปพลิเคชันคือการจัดกลุ่มเนื้อหาที่ระดับรากของเว็บไซต์หรือการจัดกลุ่มเนื้อหาในโฟลเดอร์แยกต่างหากภายใต้ไดเร็กทอรีรากของเว็บไซต์

แอปพลิเคชันพูล :

พูลแอปพลิเคชันกำหนดกลุ่มของกระบวนการของผู้ปฏิบัติงานตั้งแต่หนึ่งกระบวนการขึ้นไปโดยกำหนดค่าด้วยการตั้งค่าทั่วไปที่ตอบสนองการร้องขอไปยังแอปพลิเคชันตั้งแต่หนึ่งรายการขึ้นไปที่กำหนดให้กับกลุ่มแอปพลิเคชันนั้น เนื่องจากแอปพลิเคชันพูลอนุญาตให้ชุดของเว็บแอปพลิเคชันแชร์กระบวนการของผู้ปฏิบัติงานที่กำหนดค่าไว้ในลักษณะเดียวกันอย่างน้อยหนึ่งกระบวนการจึงเป็นวิธีที่สะดวกในการแยกชุดของเว็บแอปพลิเคชันจากเว็บแอปพลิเคชันอื่น ๆ บนคอมพิวเตอร์เซิร์ฟเวอร์ ขอบเขตของกระบวนการแยกกระบวนการของพนักงานแต่ละคน ดังนั้นปัญหาแอปพลิเคชันในแอปพลิเคชันพูลหนึ่งจึงไม่มีผลกับเว็บไซต์หรือแอปพลิเคชันในพูลแอปพลิเคชันอื่น แอปพลิเคชันพูลเพิ่มทั้งความน่าเชื่อถือและความสามารถในการจัดการของโครงสร้างพื้นฐานเว็บของคุณอย่างมาก


ดังนั้นกระบวนการ IIS จึงมีโดเมนแอปหลายโดเมน (พูลแอปพลิเคชัน) และทุกแอปพลิเคชันพูลสามารถใช้ได้หลายเว็บไซต์ ดังนั้นเว็บไซต์หลายแห่งจึงอยู่ในโดเมนแอปเดียวหรือไม่? จะเกิดอะไรขึ้นหากเกิดข้อผิดพลาดในเว็บไซต์หนึ่งโดเมนของแอปทั้งหมดและเว็บไซต์ทั้งหมดที่อยู่ในนั้น
ราวี

@ user460103 หากคุณเกิดข้อผิดพลาดในพูลใช่ไซต์ทั้งหมดที่เชื่อมต่อกับมันจะหยุดและรีสตาร์ทอีกครั้ง
Aristos

1
2. ไม่แอปพลิเคชันอาจครอบคลุมกระบวนการของผู้ปฏิบัติงานมากกว่าหนึ่งกระบวนการหากมีการกำหนดค่าสวนบนเว็บ
Wiktor Zychla

@ วิคเตอร์ - ฉันไม่ได้กีดกันเรื่องนั้น อย่างไรก็ตามมีการปรับปรุงคำตอบเพื่อชี้แจง
โอเด้ง

3

จากลิงค์แหล่งที่มา: -http: //weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

แอปพลิเคชันเป็นคำศัพท์ IIS แต่เป็นคำที่ ASP.NET ใช้ โดยพื้นฐานแล้วจะสร้างแซนด์บ็อกซ์หรือชุดขอบเขตเพื่อแยกไซต์ต่างๆหรือบางส่วนของไซต์ออกจากไซต์อื่น ๆ

AppDomain คือคำศัพท์. NET (ใน IIS7 AppDomains มีบทบาทมากขึ้นภายใน IIS แต่ส่วนใหญ่เป็นคำศัพท์ ASP.NET)

กระบวนการของผู้ปฏิบัติงานใช้เพื่อดำเนินการตามคำขอของเว็บแอปพลิเคชัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.