ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingสอบถามผู้เชี่ยวชาญ MySQL server has gone away ครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: สอบถามผู้เชี่ยวชาญ MySQL server has gone away ครับ  (อ่าน 7665 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
iCeEffecT
คนรักเสียว
*

พลังน้ำใจ: 14
ออฟไลน์ ออฟไลน์

กระทู้: 177



ดูรายละเอียด
« เมื่อ: 28 มีนาคม 2012, 18:28:58 »

สอบถามความเข้าใจครับ เท่าที่ผมค้นหาดูปัญหานี้มันมาจากการหลุด connection วิธีแก้มี 2 แบบคือ ตั้งค่า wait_timeout ใหม่ หรือ ตั้งค่า max_allowed_packet แต่ที่ผมไม่เข้าใจคือ
ทำไมเค้าบอกว่า wait_timeout มี default value เป็น 28800 Sec (8 ชั่วโมง) ในเมื่อค่า default นานขนาดนี้แล้วทำไมจึงต้องปรับค่าใหม่ให้สั้นลงด้วยครับ ผู้เชี่ยวชาญช่วยอธิบายทีครับ

อ้างอิง
http://bogdan.org.ua/2008/12/2...-has-gone-away-error-2006.html
http://paepae.exteen.com/20071...server-has-gone-away-mysql-5-0
http://linux.sothorn.org/node/925
http://stackoverflow.com/quest...ing-of-the-user-login-in-mysql
ขอบคุณครับ  wanwan012
บันทึกการเข้า
Positron
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 289
ออฟไลน์ ออฟไลน์

กระทู้: 1,060



ดูรายละเอียด
« ตอบ #1 เมื่อ: 28 มีนาคม 2012, 19:08:10 »

ปรกติแล้ว การทำงานที่มีการทำงานหรือประมวลผลนานๆ ควรจะสั่ง close db ก่อนนะครับ
เมื่อ ประมวลผลหรือทำงานเสร็จ ค่อยสั่ง connect db ใหม่

เพราะการติดต่อ db นานๆ นอกจะเกิด timeout แล้ว ยังทำให้ connection ของ db เต็มด้วย

ส่วน default นั้นไม่น่าจะนานขนาดนั้น เพราะในความเป็นจริงคือ ติดต่อdbให้น้อย ให้เร็วที่สุดเท่าไหร่ได้ยิ่งดี
บันทึกการเข้า
iCeEffecT
คนรักเสียว
*

พลังน้ำใจ: 14
ออฟไลน์ ออฟไลน์

กระทู้: 177



ดูรายละเอียด
« ตอบ #2 เมื่อ: 29 มีนาคม 2012, 10:46:28 »

งงครับ ขอที่มาหรืออ้างอิงได้มั๊ยอ่าครับ รบกวนผู้เชี่ยวชาญด้านนี้ช่วยอธิบายด้วยครับ เพราะ default ที่เห็นนี้ผมมีอ้างอิงอยู่หลายเว็บนะครับซึ่งเป็นแบบนี้จริงๆ ลอง ดูที่ค่า default ที่ตั้งไว้ใน db มันก็เป็นค่านี้ครับ ลอง SHOW VARIABLES LIKE 'wait_timeout'; ดูครับ
บันทึกการเข้า
Ashi
ก๊วนเสียว
*

พลังน้ำใจ: 21
ออฟไลน์ ออฟไลน์

กระทู้: 228



ดูรายละเอียด
« ตอบ #3 เมื่อ: 17 พฤษภาคม 2012, 17:01:22 »

ท่่านใดทราบ.... ตอบให้ด้วยนะครับผม

 wanwan017 wanwan017 wanwan017
บันทึกการเข้า
WebSnow
Verified Seller
ก๊วนเสียว
*

พลังน้ำใจ: 34
ออฟไลน์ ออฟไลน์

กระทู้: 333



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 19 พฤษภาคม 2012, 09:46:28 »

mysql has gone away เกิดจากหลายอย่าง เช่น

1.Wait_timeout expired เช่นตั้งไว้ 30 วินาที แต่ connection เกินเวลา...โดยมากจะไม่ค่อยเกิดจากตัวนี้เนื่องจาก default อยุ่ที่ 8 ชั่วโมง
2.ใช้ connection ระยะเวลายาวกว่า connection_timeout
3.user client ไม่มี permission ต่อ เข้า mysql host นี้
4.Host name lookups fail
5.มีการเรียกใช้งาน mysql แล้วเกิด connections มากกว่า max_connections
6.max_allowed_packet packet ใหญ่เกินไป process ไม่ทันเวลา



จากคำถามว่าทำไม set เวลาสั้นลงกว่า 8 ชั่วโมงแล้วแก้ไขได้ ?

คำตอบสืบเนื่องมาจากข้อ 5 อ่านต่อด้านล่าง
set ให้เวลา wait_timeout สั้นลงเพื่อไม่ให้เกิด connection จำนวณมากเกิน connection_max


เมื่อ set wait_timeout มี default value เป็น 28800 Sec (8 ชั่วโมง)

1)ถ้าเกิดว่า มี connection ใหม่ แล้วไม่ถูกปิด connection ลง เมื่อรายที่ 2 3  4 ใช้ mysql connection มันจะเพิ่มขึ้น
2)ถ้ามีการใช้งานใน mysql แล้วยังไม่สิ้นสุดจะมี connection อยู่
3)ถ้าเกิดว่ามีคนเข้าเว็บมากๆ connection ก็จะเพิ่มขึ้น

กรณี set 8 ชั่วโมง จะส่วนให้ทำให้ มี connection เพิ่มขึ้น

ถ้าท่าน set ใน /my.cnf
max_connections =50

จากถ้าเกิดว่า มี connection มากกว่า 50 ตัว ก็จะเกิด mysql has gone away

เลยจำเป็นต้อง set wait_timeout ให้สั้นลงมา เพื่อปิด connection
จะทำให้เกิด connection ไม่มาก

-----------



« แก้ไขครั้งสุดท้าย: 19 พฤษภาคม 2012, 09:52:44 โดย WebSnow » บันทึกการเข้า

WebSnow
Verified Seller
ก๊วนเสียว
*

พลังน้ำใจ: 34
ออฟไลน์ ออฟไลน์

กระทู้: 333



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 19 พฤษภาคม 2012, 09:49:25 »

วิธีแก้ไขอีกอย่างและเพิ่ม speed ขึ้นนิดนึงคือ

/etc/mysql.cnf


[mysqld]
skip-name-resolv  #เพื่อไม่ให้เช็ค resolve
wait_timeout = 3600 #ปรับลงมา 1 ชั่วโมง เพื่อไม่ให้ connection มีมาก และประหยัดทรัพยากร
connect_timeout =120 #ตั้งค่านี้สำหรับกรณีต้อง processs งานใหญ่ๆใช้นานๆ  ค่า default จะ 60

บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์