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

การพัฒนาระบบงานที่มีการติดต่อกับฐานข้อมูลตลอดเวลา บางเวลา หรือแบบมีจำนวน 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)
ไม่มีข้อมูลตามเงื่อนไขที่ท่านกำหนด
รายการบทความการแลกเปลี่ยนเรียนรู้หมวดหมู่ : กลุ่มงานเทคโนโลยีสารสนเทศ
กลุ่มงานเทคโนโลยีสารสนเทศ » UX/UI Design ต่างกันอย่างไร
การออกแบบเว็บไซต์ การออกแบบผลิตภัณฑ์และบริการดิจิทัล มีความสำคัญมากขึ้นเป็นอย่างมาก โดยเฉพาะอย่างยิ่งการออกแบบประสบการณ์ผู้ใช้ (User Experience Design: UX Design) และการออกแบบส่วนต่อประสานผู้ใช้ (...
UI Design  UX Design  UX UI  UX/UI  การออกแบบเว็บ     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน ช่อทิพย์ สิทธิ  วันที่เขียน 6/9/2567 14:14:09  แก้ไขล่าสุดเมื่อ 7/12/2567 4:10:16   เปิดอ่าน 119  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
การพัฒนาโปรแกรม » การพัฒนาระบบเพื่อลดขั้นตอนการปฏิบัติงาน สำหรับการจัดเก็บและทำลายเอกสาร
การพัฒนาระบบเพื่อลดขั้นตอนการปฏิบัติงาน สำหรับการจัดเก็บและทำลายเอกสาร โดยมีวัตถุประสงค์ เพื่อเพิ่มประสิทธิภาพในการปฏิบัติงาน โดยการนำระบบจัดเก็บและทำลายเอกสารมาช่วยปรับปรุงประสิทธิผล ในกระบวนการทำ...
Re-Design Process?  ระบบจัดเก็บและทำลายเอกสาร     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน ณัฐกฤตา โกมลนาค  วันที่เขียน 5/9/2567 11:45:54  แก้ไขล่าสุดเมื่อ 6/12/2567 14:08:36   เปิดอ่าน 327  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
การพัฒนาระบบสารสนเทศ » ข้อมูลเปิด (Open Data) เบื้องต้น
ข้อมูลเปิด (Open Data) คือ ข้อมูลที่สามารถเข้าถึง ใช้งาน แก้ไข และแบ่งปันได้โดยไม่จำกัดข้อกำหนดหรือค่าใช้จ่าย ข้อมูลเปิดมักถูกเผยแพร่ในรูปแบบที่สามารถอ่านและวิเคราะห์ได้ง่าย เช่น ไฟล์ CSV, JSON, หร...
การเข้าถึง  การใช้งาน  การแบ่งปัน  การเปิดเผย  ข้อมูลเปิด     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน สมนึก สินธุปวน  วันที่เขียน 2/9/2567 9:45:13  แก้ไขล่าสุดเมื่อ 7/12/2567 6:28:52   เปิดอ่าน 124  ครั้ง | แสดงความคิดเห็น 0  ครั้ง