วันนี้ฉันกำลังพูดคุยกับเพื่อนในกลุ่ม MSN เกี่ยวกับการเพิ่มประสิทธิภาพการทำงานของโปรแกรม ASP.net
ตอนนี้เรามาสรุปวิธีการเพิ่มประสิทธิภาพกัน:
1. การเพิ่มประสิทธิภาพฐานข้อมูล รวมถึงการเพิ่มประสิทธิภาพโครงสร้างตาราง การเพิ่มประสิทธิภาพดัชนี การเพิ่มประสิทธิภาพคำสั่ง SQL และการเพิ่มประสิทธิภาพขั้นตอนการจัดเก็บ
2. เพิ่มประสิทธิภาพ ViewState
3. ใช้แคช
4. สร้างเพจแบบคงที่ (โดยเฉพาะสำหรับส่วนหน้าของระบบเผยแพร่ข้อมูลที่ไม่มีการโต้ตอบมากนัก)
5. ใช้ IIS/Apache ส่วนหน้าเพื่อจัดการคำขอสำหรับเพจแบบคงที่ รูปภาพ และไฟล์ js
6. อัลกอริธึมการเพิ่มประสิทธิภาพ
7. เรายินดีให้ทุกคนเพิ่ม
. เกี่ยวกับการปรับแต่งประสิทธิภาพคำแนะนำของผู้เชี่ยวชาญเกือบทั้งหมดคือ: หากไม่มีการวัดประสิทธิภาพที่แน่นอน อย่าทำการปรับแต่งประสิทธิภาพ การปรับแต่งโดยไม่มีการทดสอบประสิทธิภาพมาตรฐานโดยทั่วไปจะไม่มีประโยชน์อื่นใดนอกจากการทำให้โค้ดระบบยุ่งเหยิง ผลกระทบที่คุณได้รับจากการทำงานอย่างหนักเพื่อปรับปรุงอัลกอริทึมจาก 0.1 วินาทีเป็น 0.01 วินาทีมักจะหายไปจากคำสั่งเลือกที่ไม่ถูกต้อง
ดังนั้นวิธีการก่อนหน้านี้จึงไม่ใช่ยาครอบจักรวาล หากต้องการปรับแต่งคุณต้องเข้าใจก่อนว่าระบบช้าตรงไหน อย่ารีบไปพบแพทย์โดยเด็ดขาด เนื้อหาต่อไปนี้มาจากประสบการณ์การทำงานส่วนตัวของฉัน ไม่สามารถใช้ได้กับทุกระบบ โปรดจำไว้ว่า! - - -
มาวิเคราะห์วิธีการปรับแต่งทั้งสี่นี้:
สำหรับแอปพลิเคชันประเภท OA/ระบบการจัดการธุรกิจ การปรับฐานข้อมูลให้เหมาะสมมักเป็นจุดสำคัญด้วยเหตุผลหลายประการ:
1.CRUD บนฐานข้อมูลเป็นการดำเนินการที่พบบ่อยที่สุดในระบบเหล่านี้
2. การดำเนินการบนระบบฐานข้อมูลมักทำให้เกิดดิสก์ I/O (เนื่องจากไฟล์ฐานข้อมูลและบันทึกถูกบันทึกไว้ในดิสก์)
3. การทำงานของแอปพลิเคชันบนระบบฐานข้อมูลมักจะเป็นแบบข้ามกระบวนการหรือแม้แต่ข้ามเครื่อง (Disk I/O + Network I/O ไม่ว่า CPU จะเร็วแค่ไหนหรือมีหน่วยความจำเท่าใด มันก็อยู่นอกเหนือการเข้าถึงของเรา)
ดังนั้นการดำเนินการเหล่านี้บนฐานข้อมูลจึงมักเป็นจุดคอขวดของประสิทธิภาพของทั้งระบบ
ดังนั้นเมื่อรู้ทิศทางทั่วไปนี้แล้วจะรู้ได้อย่างไรว่า SQL หรือกระบวนงานที่เก็บไว้ใดช้า? สิ่งนี้จำเป็นต้องรวมตัวสร้างโปรไฟล์ของฐานข้อมูล
สำหรับ SQL Server คุณสามารถอ่านบทความนี้ได้
http://www.microsoft.com/china/msdn/library/data/sqlserver/Profiler.mspx?mfr=true
สำหรับ Oracle คุณสามารถอ่านบทความนี้ได้
http://www.javaeye.com/post/117389
2. ViewState ดองดองนี้มีขนาดค่อนข้างใหญ่และจะมีผลกระทบต่อแอปพลิเคชันอินเทอร์เน็ตบางประการ เกี่ยวกับการเพิ่มประสิทธิภาพ สวนได้พูดถึงเรื่องนี้แล้ว ดังนั้นคุณจึงสามารถค้นหาได้ด้วยตัวเอง
3. ความคิดเห็นของฉันเกี่ยวกับการใช้แคชไม่สอดคล้องกับความคิดเห็นของเพื่อนหลายคนในกลุ่ม MSN เพื่อนในกลุ่ม MSN เชื่อว่าแคชอาจเป็นชุดของตัวแปรคงที่ หรือตัวแปรบางตัวที่ควบคุมโดยตัวควบคุมแคช โดยส่วนตัวแล้วฉันคิดว่าแคชดังกล่าวอาจมีประสิทธิภาพที่ดีในสภาพแวดล้อมแบบเซิร์ฟเวอร์เดียว ในสภาพแวดล้อมแบบหลายเซิร์ฟเวอร์ แคชดังกล่าวจะกลายเป็นปัญหาคอขวดของประสิทธิภาพ เนื่องจากแอปพลิเคชันหรือตัวควบคุมแคชจำเป็นต้องตรวจสอบเนื้อหาแคชของกระบวนการต่างๆ อย่างระมัดระวัง . สม่ำเสมอ. กระบวนการนี้ช่วยลดความสามารถในการปรับขนาดของโปรแกรมได้อย่างมาก พิจารณาเว็บฟาร์มที่มีเซิร์ฟเวอร์ 100 เครื่อง การแก้ไขแคชในกระบวนการเดียวต้องมีการแจ้งเตือนและยืนยันว่าเซิร์ฟเวอร์ 99 รายการที่เหลือมีการเปลี่ยนแปลงอย่างถูกต้อง นี่ถือเป็นสิ่งที่แย่มาก
สำหรับสิ่งนี้ memcache จึงเป็นวิธีแก้ปัญหาที่ค่อนข้างดี Mediawiki ซึ่งเป็นผลิตภัณฑ์วิกิที่มีชื่อเสียงใช้เป็นเซิร์ฟเวอร์แคช Memcache ยังมี .net client api อีกด้วย
4. ฉันไม่เข้าใจมันมากนัก โปรดให้คำแนะนำจากผู้เชี่ยวชาญ
5. มีการแนะนำมากมายบนอินเทอร์เน็ต โดยเฉพาะบน Java มีการแนะนำ apache กับ Tomcat มากมาย กูเกิ้ลมันเอง
6. การเพิ่มประสิทธิภาพนี้ซับซ้อนที่สุด และผลลัพธ์อาจชัดเจนน้อยที่สุด หากคุณต้องทำ ปล่อยให้ผู้เป็นอมตะทั้งแปดข้ามทะเลและแสดงพลังเวทย์มนตร์ของพวกเขา
http://www.cnblogs.com/ncindy/archive/2006/11/07/553533.html