การแก้ปัญหา Pooling ของ Applicationsใน ASP.NET
วันที่เขียน 17/9/2555 11:11:43     แก้ไขล่าสุดเมื่อ 4/4/2568 4:54:41
เปิดอ่าน: 13518 ครั้ง

การพัฒนาระบบงานที่มีการติดต่อกับฐานข้อมูลตลอดเวลา บางเวลา หรือแบบมีจำนวน 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)
ไม่มีข้อมูลตามเงื่อนไขที่ท่านกำหนด
รายการบทความการแลกเปลี่ยนเรียนรู้หมวดหมู่ : กลุ่มงานเทคโนโลยีสารสนเทศ
การพัฒนาระบบสารสนเทศ » Ann algorithm กับ Multi-labels
Approximate Nearest Neighbor (ANN) algorithm ซึ่งเป็นเทคนิคที่ใช้ในด้านการค้นหาข้อมูลที่ใกล้เคียง (nearest neighbors) ในฐานข้อมูลหรือดาต้าเซ็ตที่มีขนาดใหญ่มาก โดยไม่ต้องค้นหาทุก ๆ ตัวในฐานข้อมูลที่...
Approximate Nearest Neighbor  classification  Multi-labels     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน สมนึก สินธุปวน  วันที่เขียน 11/2/2568 9:52:24  แก้ไขล่าสุดเมื่อ 4/4/2568 1:53:29   เปิดอ่าน 138  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
กลุ่มงานเทคโนโลยีสารสนเทศ » UX/UI Design ต่างกันอย่างไร
การออกแบบเว็บไซต์ การออกแบบผลิตภัณฑ์และบริการดิจิทัล มีความสำคัญมากขึ้นเป็นอย่างมาก โดยเฉพาะอย่างยิ่งการออกแบบประสบการณ์ผู้ใช้ (User Experience Design: UX Design) และการออกแบบส่วนต่อประสานผู้ใช้ (...
UI Design  UX Design  UX UI  UX/UI  การออกแบบเว็บ     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน ช่อทิพย์ สิทธิ  วันที่เขียน 6/9/2567 14:14:09  แก้ไขล่าสุดเมื่อ 3/4/2568 1:04:06   เปิดอ่าน 283  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
การพัฒนาโปรแกรม » การพัฒนาระบบเพื่อลดขั้นตอนการปฏิบัติงาน สำหรับการจัดเก็บและทำลายเอกสาร
การพัฒนาระบบเพื่อลดขั้นตอนการปฏิบัติงาน สำหรับการจัดเก็บและทำลายเอกสาร โดยมีวัตถุประสงค์ เพื่อเพิ่มประสิทธิภาพในการปฏิบัติงาน โดยการนำระบบจัดเก็บและทำลายเอกสารมาช่วยปรับปรุงประสิทธิผล ในกระบวนการทำ...
Re-Design Process?  ระบบจัดเก็บและทำลายเอกสาร     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน ณัฐกฤตา โกมลนาค  วันที่เขียน 5/9/2567 11:45:54  แก้ไขล่าสุดเมื่อ 3/4/2568 13:42:32   เปิดอ่าน 709  ครั้ง | แสดงความคิดเห็น 0  ครั้ง