แอปพลิเคชัน IIS7 ASP.NET - 2 แอพที่เหมือนกันใน 2 แอพที่เหมือนกัน 1 แอพตอบสนองและ 1 ไม่


12

ฉันมีแอพพลิเคชั่นเว็บ ASP.NET (v4.0) ที่ติดตั้งในไดเรกทอรีเสมือน (เป็นแอปพลิเคชัน) และโฮสต์ในแอพของตัวเอง การทำเช่นนี้ซ้ำสำหรับแต่ละอินสแตนซ์ของแอป (เช่นต่อลูกค้าหนึ่งราย)

พูลของแอพรวมโหมด (ไม่ใช่แบบคลาสสิก) และ LoadUserProfile ถูกตั้งค่าเป็นจริง มิฉะนั้นการตั้งค่าเริ่มต้น

แต่ละอินสแตนซ์ในปัจจุบันมีสำเนาของรหัส / config และเป็นโฟลเดอร์ข้อมูลของตัวเอง (อ่าน / เขียนไฟล์พื้นฐาน)

1 อินสแตนซ์ของแอพนี้ทำงานได้ดี (การดำเนินการที่ใช้สำหรับการเปรียบเทียบใช้เวลาประมาณ 4 วินาที) อินสแตนซ์อื่น ๆ จะทำงานช้า (จาก 10-25 วินาทีสำหรับการทำงานเดียวกัน)

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

แอพพูลนั้นถูกสร้างด้วยวิธีเดียวกันในตอนแรก - ด้วยตนเอง ภายหลังฉันใช้รูทีนการคัดลอก powershell เพื่อให้แน่ใจว่าสำเนาของแอพพลิเคชั่นเร็วขึ้นและยังคงทำงานเหมือนเดิม การเปรียบเทียบไฟล์ apppool.config แสดงว่าพวกมันเหมือนกันยกเว้นการกำหนดไดเรกทอรีเสมือน

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


และโฟลเดอร์แอพเหมือนกันไหม?
usr

ใช่เพียงแค่การตรวจสอบสามครั้ง แต่ความแตกต่างเพียงอย่างเดียวคือใน web.config ซึ่งจะระบุชื่อของไดเรกทอรีเสมือนที่กำลังโฮสต์ภายใต้ (และฉันตรวจสอบอีกครั้งว่ามีความแตกต่างเพียงอย่างเดียวด้วย) ไฟล์อื่น ๆ ทุกไฟล์เป็นแบบไบต์ .. .

แอพทำอะไรที่ใช้เวลานานกว่าในแอพเดียว คุณสามารถแนบ VS และหยุดการดีบั๊กไปยังโปรไฟล์ได้หรือไม่
usr

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

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

คำตอบ:


1

เพื่อแยกปัญหาเพิ่มเติมฉันขอแนะนำให้ใช้ Wireshark (หรือตัววิเคราะห์แพ็คเก็ตอื่น ๆ ของตัวเลือก) บนระบบโฮสต์สองครั้ง ข้อสันนิษฐานที่ฉันทำคือแอพพูลแต่ละอันมี IP ที่ไม่ซ้ำกันที่ได้รับมอบหมายหรือพอร์ตที่ไม่ซ้ำกัน

ก่อนอื่นรับประสิทธิภาพพื้นฐานของคุณโดยการกรอง IP: พอร์ตของแอพพลิเคชั่นที่รวดเร็ว ดูว่าทราฟฟิกเข้าและออกจากแอพมีลักษณะอย่างไรภายใต้เงื่อนไข "ปกติ"

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

การทดสอบนี้จะบอกคุณว่าปัญหาอยู่ในแอพหรือไม่หรือเป็นปัญหาที่เกี่ยวข้องกับ TCP / IP ที่ส่งผลให้มีการร้องขอให้แอพหมดเวลาเนื่องจากมีการสื่อสารน้อย / ไม่มีเลย

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


0

การติดตามคำขอที่ล้มเหลว (FRT) จะเป็นเครื่องมือที่ดีที่สุดในการติดตามเรื่องนี้ มันจะแสดงขั้นตอนและระยะเวลาที่แต่ละขั้นตอนดำเนินการจนเสร็จ นั่นควรชี้ให้เห็นว่าเป็นสิ่งที่อยู่ในส่วน asp.net หรือถ้าเป็นสิ่งที่อยู่ภายใน IIS ไปป์เอง

ในการตั้งค่า FRT จาก IIS ที่ระดับไซต์ให้สร้างกฎ FRT ที่มีช่วงสถานะ HTTP 200-999 และตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน FRT (เป็นขั้นตอนแยกต่างหากจากบานหน้าต่างการทำงาน)

จากนั้นสร้างปัญหาขึ้นอีกครั้งและดูไฟล์ที่สร้างขึ้น (% SystemDrive% \ inetpub \ logs \ FailedReqLogFiles \ w3svc {siteid}) เปิดใน Internet Explorer


0

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

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

กรุณาโพสต์การค้นพบของคุณฉันอยากรู้

PS ฉันจะตรวจสอบการจำแนกชื่อและเข้าถึงบริการการตรวจสอบความถูกต้องใด ๆ ที่อาจใช้งานอยู่ ตัวอย่างเช่นหากต้องการตรวจสอบความถูกต้องของโดเมนต้องแน่ใจว่าเซิร์ฟเวอร์ DNS ตัวแรกในรายการของคุณคือเซิร์ฟเวอร์ DNS สำหรับโดเมน


0

นี่ไม่ใช่ทางออก แต่เราจะพยายามแก้ไข

  1. เรียกใช้ IISRESET (ในระหว่างชั่วโมงการบำรุงรักษา) หรือฆ่า W3WP ที่เป็นของกลุ่มแอพที่ไม่ตอบสนอง

  2. เปิดแอปพลิเคชัน

  3. ในขณะที่ไม่ตอบสนองให้คว้าไฟล์ดัมพ์ของ W3WP ที่เป็นของแอพพูลช้า ใช้ตัวสำรวจกระบวนการหรือตัวจัดการงานเพื่อสร้างไฟล์ดัมพ์

  4. คว้า mscordacwks.dll และ mscorwks.dll จากภายใต้ C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.XXXXX

  5. ซิปและอัปโหลดไฟล์เหล่านี้จากที่ที่ฉันสามารถดาวน์โหลดได้

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