Tags:

สอบถามเรื่องปัญหาการ connecting database เมื่อมีการ connect หลายๆครั้งครับ
โดยเมื่อมีการ connect หลายๆครั้ง จะแสดง error ดังนี้ครับ

MySql.Data.MySqlClient.MySqlException (0x80004005): error connecting: Timeout expired.
The timeout period elapsed prior to obtaining a connection from the pool.
This may have occured because all pooled connections were in use and
max pool size was reached.

at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at ...(ชื่อ class ที่ connect database)

ตอนนี้ที่แก้ไปแล้วคือ
- เข้าไป set timeout ใน server ใหม่เป็น 60 วินาที ซึ่งยังไม่หาย
- เข้าไป set max_pool_size เป็นจำนวน 60% ของ ram แล้ว ก็ยังไม่หายครับ

ไม่ทราบว่ามีท่านใดที่เคยประสบปัญหาดังกล่าวและแก้ไขได้บ้างครับ และแก้อย่างไร ขอบคุณครับ

ปล. พัฒนาบน vb.net framework ครับ

Get latest news from Blognone
By: osmiumwo1f
ContributorWindows PhoneWindows
on 28 November 2016 - 11:04 #955962
osmiumwo1f's picture

ทุกๆ ครั้งที่ต่อ DB คุณได้ปิดการเชื่อมต่อมั้ยครับ ถ้าไม่ก็เพราะว่าคุณเปิดอย่างเดียวแต่ไม่ปิดเลยครับ

By: Shin Pongsin
AndroidWindows
on 28 November 2016 - 11:47 #955965
  1. ปัญหาอาจเกิดจาก คนเข้าเยอะมาก (session เยอะมาก ทำงานไม่ทันเสร็จคนใหม่เข้ามาเติมๆรัวๆ)
  2. (ร่วมกับ) เปิด connection ดึงข้อมูล/แก้ไขข้อมูลต่างๆ แล้วไม่ได้ปิด connection.close ให้หมด
    2.1 ดู block try-catch ให้ดีๆ ว่ามี finally หรือไม่? ให้เอา connection.close ใส่ใน finally ไว้ด้วยเสมอ (เพราะเจอการเขียนที่พลาดบ่อย เช่น มี try ใน try มี con.open แล้วก็เขียน con.close ไว้ที่ catch แต่ลืมคิดไปว่า ถ้าไม่เกิด error จะไม่ได้เข้า catch แล้วก็เลยไม่ได้ปิด con.close)

ทางแก้
1. เพิ่ม max pool size ใน connection string (เต็มที่ของ mysql น่าจะได้ 100) แล้วเทสดู
2. แก้ถาวร ใช้ max pool size ไม่มากนัก (เช่น 2) แล้วไล่ตามปิด connection ทันที ที่ใช้ข้อมูล/แก้ไขข้อมูลเสร็จ ให้เร็วที่สุด

By: UltimaWeapon
Windows PhoneRed HatWindowsIn Love
on 29 November 2016 - 07:00 #956077
UltimaWeapon's picture

https://msdn.microsoft.com/en-us/library/htd05whh.aspx

By: raiderzx on 5 December 2016 - 20:43 #957021

ขอบพระคุณทุกท่านครับ สำหรับคำตอบ