การแก้ปัญหา Pooling ของ Applicationsใน ASP.NET
วันที่เขียน 17/9/2555 11:11:43     แก้ไขล่าสุดเมื่อ 10/8/2563 7:24:29
เปิดอ่าน: 9147 ครั้ง

การพัฒนาระบบงานที่มีการติดต่อกับฐานข้อมูลตลอดเวลา บางเวลา หรือแบบมีจำนวน Client เข้ามาติดต่อเป็นจำนวนมาก เมื่อทำการเปิดฐานข้อมูล โดยการเปิด Connection ไปยัง Database จะทำให้เกิดการใช้งานทรัพยากรของระบบในจำนวนมากและทำให้ Application ที่ทำการเปิด Connection นั้นทำงานช้าลงไปด้วย และเมื่อมีการเปิดการติดต่ออยู่กับ Database ตัวเดียว หรือหลายๆ ตัวในระบบ จะทำให้เกิดการเชื่อมต่อการทำงานตลอดเวลา

การพัฒนาระบบงานที่มีการติดต่อกับฐานข้อมูลตลอดเวลา บางเวลา หรือแบบมีจำนวน Client เข้ามาติดต่อเป็นจำนวนมาก เมื่อทำการเปิดฐานข้อมูล โดยการเปิด Connection ไปยัง Database จะทำให้เกิดการใช้งานทรัพยากรของระบบในจำนวนมากและทำให้ Application ที่ทำการเปิด Connection นั้นทำงานช้าลงไปด้วย และเมื่อมีการเปิดการติดต่ออยู่กับ Database ตัวเดียว หรือหลายๆ ตัวในระบบ จะทำให้เกิดการเชื่อมต่อการทำงานตลอดเวลา

โดย Connection Pool จะทำ Connection เป็นแบบ Idle หรือ Open หรือ Reuse ได้ แทนที่จะเปิด New connection ใหม่ทุกครั้งที่มีการ Request ขอติดต่อกับ Database เมื่อ Connection ถูกปิด หรือ ถูกเปิด มันจะส่งค่ากลับมายัง Pool และมีสถานะเป็น Idle จนกว่ามี Request เพื่อขอ Connection มาใหม่ ถ้าเราใช้ Connection Pool อย่างมีประสิทธิภาพ คือ เปิดและปิดทุกครั้งของการ Connect DB ก็จะทำให้มีการใช้ Resource ในปริมาณที่น้อย

 

เพื่อให้ Connection Pool ให้มีประสิทธิภาพที่ดีที่สุดและทำให้ Performance ของ Application ที่งานได้ดีที่สุด

 

1.วิธีการแก้ปัญหาที่ดีที่สุดโดย ทำการ Closing connections เมื่อมีการ Open Connection ต้องมีการ Close ทุกครั้ง ตัวอย่างเช่น

 

     SqlConnection conn = new SqlConnection(myConnectionString);

     conn.Open();

     doSomething();

     conn.Close();          

2.ใช้คำสั่ง Try Catch มาใช้ในการทำงาน

     SqlConnection conn = new SqlConnection(myConnectionString);

     try

     {

          conn.Open();

          doSomething(conn);

     }

     finally

{

          conn.Close();          

     }

3. เขียนในรูปแบบของการ Using

     using (SqlConnection conn = new SqlConnection(myConnectionString))

     {

          conn.Open();

          doSomething(conn);

     }

 

4. เมื่อมีการ connection ไปยัง  a class ต่างๆ ต้องแน่ใจว่ามีการปิดการเชื่อมต่อแล้ว

OleDbCommand cmd new OleDbCommand(myUpdateQuery, getConnection());

     intres = cmd.ExecuteNonQuery();

     getConnection().Close(); // The connection returned from the first call to getConnection() is not being closed. Instead of closing your connection, this line creates a new one and tries to close it.

 

หรือใช้รูปแบบง่ายๆ ทุกครั้งในการเชื่อมต่อ  ดังนี้

conn = new SqlConnection();

try

{

conn.ConnectionString = "integrated security=SSPI;SERVER=YOUR_SERVER;DATABASE=YOUR_DB_NAME;Min Pool Size=5;Max Pool Size=60;Connect Timeout=2;";// Notice Connection Timeout set to only two seconds!

conn.Open();

}

catch(Exception)

{

if (conn.State != ConnectionState.Closed) conn.Close();

conn.ConnectionString = "integrated security=SSPI;SERVER=YOUR_SERVER;DATABASE=YOUR_DB_NAME;Pooling=false;Connect Timeout=45;";

conn.Open();

เพียงเท่านี้ ก็จะแก้ไขปัญหา Pooling ของ Application  ได้

คำสำคัญ :
กลุ่มบทความ :
หมวดหมู่ :
แชร์ :
https://erp.mju.ac.th/acticleDetail.aspx?qid=217
ความคิดเห็นทั้งหมด (0)
ไม่มีข้อมูลตามเงื่อนไขที่ท่านกำหนด
รายการบทความการแลกเปลี่ยนเรียนรู้หมวดหมู่ : กลุ่มงานเทคโนโลยีสารสนเทศ
กลุ่มงานเทคโนโลยีสารสนเทศ » ซอฟต์แวร์ลิขสิทธิ์ มหาวิทยาลัยแม่โจ้
กองเทคโนโลยีดิจิทัล มีภารกิจดูแลการให้บริการซอฟต์แวร์ลิขสิทธิ์ที่ให้บริการภายในมหาวิทยาลัย ซึ่งผู้ใช้งานทั้งอาจารย์ นักวิจัย เจ้าหน้าที่ และนักศึกษา มีความต้องการใช้งานซอฟต์แวร์ที่หลากหลาย และซอฟต์...
ซอฟท์แวร์ลิขสิทธิ์  โปรแกรมลิขสิทธิ์  โปรแกรมสำเร็จรูป     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน บรรพต โตสิตารัตน์  วันที่เขียน 13/5/2563 11:03:42  แก้ไขล่าสุดเมื่อ 10/8/2563 5:50:59   เปิดอ่าน 565  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
MS OFFICE » คู่มือใช้งาน Google Classroom สำหรับอาจารย์ มหาวิทยาลัยแม่โจ้
Google Classroom เป็นบริการของ Google ที่มีเครื่องมือสำหรับให้อาจารย์ผู้สอนได้ใช้ประโยชน์ในการสร้างห้องเรียนเสมือนได้ ซึ่งการใช้งานนั้น สามารถเข้าใช้งานได้ทุกอุปกรณ์ไม่ว่าจะเป็น คอมพิวเตอร์แท็ปเล็ต...
Google Classroom     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน ศุภวรรณ สัจจากุล  วันที่เขียน 8/4/2563 14:42:54  แก้ไขล่าสุดเมื่อ 10/8/2563 4:02:53   เปิดอ่าน 494  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
ทั่วไป » ทำงานที่บ้าน จะติดต่อระหว่างหน่วยงานอย่างไร
เดิมปกติจะใช้เบอร์โต๊ะโทรประสานงานกัน แต่ช่วงนี้เราจำเป็นต้องทำงานจากที่บ้าน หากคนที่เคยติดต่อกันทาง facebook line ก็จะไม่มีปัญหา แล้วคนอื่น หน่วยงานอื่นล่ะจะทำยังไง เรามีเครื่องมือไว้ให้พร้อมแล้ว ...
  กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน วสุ ไชยศรีหา  วันที่เขียน 27/3/2563 12:21:15  แก้ไขล่าสุดเมื่อ 10/8/2563 5:26:45   เปิดอ่าน 829  ครั้ง | แสดงความคิดเห็น 0  ครั้ง