วิธีแก้ไขข้อผิดพลาด MySQL 2013: สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL
เผยแพร่แล้ว: 2024-03-26เมื่อคุณเรียกใช้การสืบค้น MySQL จำนวนมาก คุณอาจพบข้อผิดพลาด MySQL 2013: สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในระหว่างการสืบค้น รหัสข้อผิดพลาดนี้จะปรากฏขึ้นเมื่อการเชื่อมต่อระหว่างเครื่องมือหรือแอปพลิเคชันของคุณกับเซิร์ฟเวอร์ MySQL หายไปหรือสูญหาย
เพื่อให้เข้าใจถึงปัญหานี้ สิ่งสำคัญคือต้องทราบว่า MySQL จัดการการสื่อสารระหว่างซอฟต์แวร์ที่คุณใช้กับเซิร์ฟเวอร์ MySQL อย่างไร มีกฎและการตั้งค่าบางอย่าง เช่น การหมดเวลา ซึ่งกำหนดระยะเวลาที่เซิร์ฟเวอร์จะรอคำตอบ ฯลฯ นอกจากการตั้งค่าทางเทคนิคเหล่านี้แล้ว ปัจจัยภายนอก เช่น ความน่าเชื่อถือของเครือข่ายและโหลดของเซิร์ฟเวอร์ยังมีบทบาทสำคัญในการโต้ตอบที่ราบรื่นระหว่างไคลเอนต์ของคุณกับ MySQL เซิร์ฟเวอร์
การจับความแตกต่างของข้อผิดพลาด MySQL ปี 2013 ต้องใช้ข้อมูลเชิงลึกทางเทคนิคเล็กน้อย แต่ยิ่งไปกว่านั้น ยังต้องใช้ความอดทนและความเต็มใจที่จะทำงานด้านนักสืบด้านไอทีอีกด้วย ในบทความนี้ เราจะพูดถึงวิธีแก้ไขข้อผิดพลาด MySQL ปี 2013: สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในระหว่างปัญหาการสืบค้น
การเปลี่ยนแปลงของข้อผิดพลาด MySQL 2013
ข้อผิดพลาด “สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระหว่างการสืบค้น” อาจแสดงในรูปแบบที่แตกต่างกัน ต่อไปนี้คือรูปแบบบางส่วนของข้อความที่อาจปรากฏบนหน้าจอของคุณ:
- 2013 – สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL เมื่อ 'อ่านแพ็คเก็ตการสื่อสารเริ่มต้น' ข้อผิดพลาดของระบบ: 0
รูปแบบข้อผิดพลาดนี้มักจะปรากฏขึ้นตั้งแต่เนิ่นๆ เมื่อไคลเอนต์ของคุณพยายามเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ส่วน “ข้อผิดพลาดของระบบ: 0” อาจดูลึกลับเล็กน้อย แต่โดยพื้นฐานแล้วมันเป็นวิธีของ MySQL ในการบอกคุณว่า “มีบางอย่างไม่ถูกต้อง แต่ฉันไม่สามารถระบุปัญหาได้”
- สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ที่ 'กำลังรอแพ็กเก็ตการสื่อสารเริ่มต้น' ข้อผิดพลาดของระบบ: 100
เช่นเดียวกับรูปแบบแรก ข้อผิดพลาดนี้จะปรากฏขึ้นในระหว่างขั้นตอนการเชื่อมต่อเริ่มต้น อย่างไรก็ตาม “ข้อผิดพลาดของระบบ: 100” ชี้ไปที่ปัญหาการหมดเวลา ซึ่งหมายความว่าเซิร์ฟเวอร์รอนานเกินไปสำหรับแพ็กเก็ตการสื่อสารเริ่มต้นจากไคลเอนต์และปิดการเชื่อมต่อ
- สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในระหว่างการสืบค้น
อันนี้ตรงไปตรงมากว่านี้เล็กน้อย มันเกิดขึ้นในขณะที่คุณกำลังเรียกใช้แบบสอบถาม และทันใดนั้น การเชื่อมต่อกับเซิร์ฟเวอร์ก็หยุดลง ไม่ว่าจะเป็นการดำเนินการ SELECT แบบธรรมดาหรือการดำเนินการ JOIN ที่ซับซ้อนมากขึ้น เซิร์ฟเวอร์ก็ไม่สามารถเข้าถึงได้ในทันที
- MySQL Workbench สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ที่ 'xxx' ข้อผิดพลาดของระบบ: 10060:
สำหรับผู้ที่ใช้ MySQL ผ่านอินเทอร์เฟซแบบกราฟิกของ MySQL Workbench การพบ “ข้อผิดพลาดของระบบ: 10060” ถือเป็นสัญญาณที่ชัดเจนว่าการเชื่อมต่อหมดเวลา “xxx” หมายถึงการดำเนินการเฉพาะที่คุณกำลังพยายาม ซึ่งถูกขัดจังหวะด้วยปัญหาการเชื่อมต่อ
สิ่งที่รูปแบบต่างๆ เหล่านี้มีร่วมกันคือการหยุดชะงักในการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์ MySQL ข้อความแสดงข้อผิดพลาดที่คุณได้รับจะแตกต่างกันไปขึ้นอยู่กับเครื่องมือที่คุณใช้และจุดเฉพาะที่คุณดำเนินการบน MySQL
เหตุผลเบื้องหลัง MySQL 2013
มีหลายปัจจัยที่อาจทำให้เกิดข้อผิดพลาด MySQL 2013 ปัญหานี้อาจขัดจังหวะเวิร์กโฟลว์ของคุณและทำให้เกิดการหยุดชะงักที่ไม่คาดคิดในการดำเนินงานฐานข้อมูลของคุณ การทำความเข้าใจสาเหตุหลักของปัญหานี้เป็นสิ่งสำคัญสำหรับการแก้ไขปัญหาและป้องกันไม่ให้เกิดขึ้นในอนาคต
เรามาแจกแจงสิ่งที่พบบ่อยที่สุด:
ปัญหาเครือข่าย: หากการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ของคุณถูกตัดขาดไปเรื่อยๆ ปัญหาอาจอยู่ที่เครือข่ายอาจเนื่องมาจากฮาร์ดแวร์เครือข่ายไม่ดี การรับส่งข้อมูลมากเกินไปทำให้เกิดความแออัด หรือการตั้งค่าอุปกรณ์เครือข่ายไม่ถูกต้อง
การกำหนดค่าเซิร์ฟเวอร์: การตั้งค่าเซิร์ฟเวอร์ MySQL บางอย่าง เช่น ` wait_timeout` , ` max_allowed_packet` และ ` net_read_timeout ` มีความสำคัญอย่างยิ่งต่อการรักษาการเชื่อมต่อหากการตั้งค่าเหล่านี้ไม่ได้รับการกำหนดค่าอย่างเหมาะสมเพื่อให้ตรงกับปริมาณงานและสภาพแวดล้อมการปฏิบัติงานเฉพาะของคุณ อาจส่งผลให้การเชื่อมต่อหลุดได้
การกำหนดค่าไคลเอนต์: การตั้งค่าฝั่งคุณ เช่น ระยะเวลาที่คอมพิวเตอร์ของคุณรอการตอบกลับจากเซิร์ฟเวอร์ก็มีความสำคัญเช่นกันหากไม่รอคำตอบนานพอ การเชื่อมต่ออาจหมดเวลาและถูกตัดออก
การรบกวนของไฟร์วอลล์/แอนตี้ไวรัส: บางครั้งไฟร์วอลล์หรือซอฟต์แวร์แอนตี้ไวรัสบนไคลเอนต์หรือฝั่งเซิร์ฟเวอร์อาจระบุการรับส่งข้อมูล MySQL ว่าเป็นภัยคุกคามอย่างไม่ถูกต้อง และบล็อกหรือขัดขวางการเชื่อมต่อ
เซิร์ฟเวอร์โอเวอร์โหลด: หากเซิร์ฟเวอร์ MySQL มีภาระงานหนัก อาจมีทรัพยากรไม่เพียงพอที่จะจัดการการเชื่อมต่อใหม่หรือการเชื่อมต่อที่กำลังดำเนินอยู่ได้อย่างมีประสิทธิภาพ ส่งผลให้การเชื่อมต่อหลุดสถานการณ์นี้มักพบเห็นได้ในสภาพแวดล้อมที่มีการรับส่งข้อมูลสูงหรือระหว่างการดำเนินการที่ใช้ทรัพยากรมาก
เมื่อทราบสาเหตุของปัญหาแล้ว เรามาดูขั้นตอนการแก้ปัญหากันดีกว่า
วิธีการแก้ไขข้อผิดพลาด MySQL 2013
ขั้นตอนในการแก้ไขข้อผิดพลาด MySQL 2013 มีตั้งแต่การตรวจสอบการตั้งค่าไปจนถึงการปรับทางเทคนิค
คำแนะนำทีละขั้นตอนเพื่อแก้ไขปัญหานี้อย่างมีประสิทธิภาพ:
ตรวจสุขภาพเบื้องต้น
ตรวจสอบการเชื่อมต่อเครือข่าย
เริ่มต้นด้วยการตรวจสอบการเชื่อมต่อเครือข่ายที่เสถียรระหว่างคอมพิวเตอร์หรือแอปพลิเคชันของคุณกับเซิร์ฟเวอร์ MySQL ใช้เครื่องมือวินิจฉัยเครือข่าย เช่น ` ping `, ` Traceroute` หรือ ` mtr` เพื่อตรวจสอบปัญหาเส้นทางเครือข่ายหรือเวลาแฝงที่อาจทำให้การเชื่อมต่อหลุด
ตรวจสอบบันทึกของเซิร์ฟเวอร์และไคลเอนต์
ตรวจสอบบันทึกทั้งฝั่งเซิร์ฟเวอร์และคอมพิวเตอร์ ค้นหาข้อความแสดงข้อผิดพลาดหรือคำเตือนในช่วงเวลาที่การเชื่อมต่อขาดหาย บันทึกเหล่านี้สามารถให้คำแนะนำที่สำคัญเกี่ยวกับสาเหตุของปัญหาได้
เรียกใช้โซลูชันทางเทคนิค
ปรับการตั้งค่าการหมดเวลาของเซิร์ฟเวอร์
- เข้าถึงไฟล์การกำหนดค่าเซิร์ฟเวอร์ MySQL ของคุณ (` my.cnf ` หรือ ` my.ini ` ขึ้นอยู่กับระบบปฏิบัติการของคุณ)
- ค้นหาส่วน ` [mysqld] ` และเพิ่มหรือแก้ไขบรรทัดต่อไปนี้เพื่อเพิ่มค่าการหมดเวลาของคุณ:
wait_timeout = 28800 net_read_timeout = 120
- รีสตาร์ทเซิร์ฟเวอร์ MySQL ของคุณเพื่อใช้การเปลี่ยนแปลงเหล่านี้
เพิ่มขนาดแพ็กเก็ตสูงสุดที่อนุญาต
ปัญหาการเชื่อมต่ออาจเกิดขึ้นได้หากข้อมูลที่ส่งเกินขนาดแพ็กเก็ตสูงสุดที่อนุญาตของ MySQL โดยเฉพาะอย่างยิ่งเมื่อมีการสืบค้นข้อมูลจำนวนมาก
- เชื่อมต่อกับเซิร์ฟเวอร์ MySQL ของคุณโดยใช้เครื่องมือไคลเอ็นต์ เช่น MySQL Workbench หรือบรรทัดคำสั่ง
- ดำเนินการคำสั่ง SQL ต่อไปนี้เพื่อเพิ่ม ขนาด ` max_allowed_packet` (ปรับตามความต้องการของคุณ)
ตั้งค่า GLOBAL max_allowed_packet = 1073741824; - หรือคุณสามารถตั้งค่านี้อย่างถาวรในไฟล์การกำหนดค่าเซิร์ฟเวอร์ MySQL ของคุณภายใต้ส่วน `[mysqld]` เป็น `max_allowed_packet=1073741824` จากนั้นรีสตาร์ทเซิร์ฟเวอร์ของคุณ
กำหนดค่าไฟร์วอลล์และซอฟต์แวร์ป้องกันไวรัส
- ตรวจสอบการตั้งค่าไฟร์วอลล์และซอฟต์แวร์ป้องกันไวรัสทั้งในด้านคอมพิวเตอร์และเซิร์ฟเวอร์
- เพิ่มข้อยกเว้นสำหรับพอร์ตเริ่มต้นของ MySQL (3306) และพอร์ตที่กำหนดเองที่คุณใช้
- ตรวจสอบให้แน่ใจว่าไฟล์ปฏิบัติการ MySQL ได้รับอนุญาตผ่านไฟร์วอลล์ และไม่ถูกตั้งค่าสถานะโดยซอฟต์แวร์ป้องกันไวรัส
เพิ่มประสิทธิภาพเซิร์ฟเวอร์ MySQL
- วิเคราะห์และเพิ่มประสิทธิภาพการสืบค้นฐานข้อมูลของคุณเพื่อประสิทธิภาพ พิจารณาคอลัมน์การจัดทำดัชนีที่ใช้ใน JOIN และส่วนคำสั่ง WHERE
- ตรวจสอบการใช้ทรัพยากรของเซิร์ฟเวอร์ของคุณและปรับการตั้งค่าเพื่อการจัดสรรทรัพยากรที่ดีขึ้น (เช่น ` innodb_buffer_pool_size `, ` query_cache_size `)
- พิจารณาปรับขนาดฮาร์ดแวร์เซิร์ฟเวอร์ของคุณหรือใช้แบบจำลองการอ่านเพื่อกระจายโหลด
การเพิ่มประสิทธิภาพเซิร์ฟเวอร์ MySQL อาจช่วยสถานการณ์ได้ เนื่องจากเซิร์ฟเวอร์มีภาระงานหนัก เซิร์ฟเวอร์อาจยุติการเชื่อมต่อเพื่ออนุรักษ์ทรัพยากร ซึ่งนำไปสู่ข้อผิดพลาด 2013
ใช้การเชื่อมต่อแบบถาวร
- ในการตั้งค่าการเชื่อมต่อฐานข้อมูลของแอปพลิเคชันของคุณ ให้เปิดใช้งานการใช้การเชื่อมต่อแบบถาวร ตัวเลือกนี้จะแตกต่างกันไปขึ้นอยู่กับภาษาการเขียนโปรแกรมและไลบรารีการเข้าถึงฐานข้อมูลที่คุณใช้
- ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ MySQL ของคุณได้รับการกำหนดค่าให้รองรับการเชื่อมต่อถาวรตามจำนวนที่คาดไว้ โดยการปรับการตั้งค่า ` max_connections ` หากจำเป็น
มีเพียงการทำงานผ่านปัญหาที่อาจเกิดขึ้นเหล่านี้อย่างเป็นระบบเท่านั้น คุณจึงสามารถพบวิธีแก้ปัญหาที่ทำให้การเชื่อมต่อของคุณเสถียรและทำให้การโต้ตอบฐานข้อมูลของคุณทำงานได้อย่างราบรื่น
ห่อ
ข้อผิดพลาด MySQL 2013: สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระหว่างการสืบค้น นี่อาจดูน่าปวดหัวเมื่อมองแวบแรก ด้วยการทำความเข้าใจสาเหตุสำคัญที่อยู่เบื้องหลังปัญหานี้ เช่น ปัญหาเครือข่าย ปัญหาการกำหนดค่าเซิร์ฟเวอร์หรือไคลเอนต์ ไฟร์วอลล์หรือโปรแกรมป้องกันไวรัสรบกวน และเซิร์ฟเวอร์โอเวอร์โหลด คุณสามารถเริ่มแก้ไขสาเหตุหลักได้
ขั้นตอนที่ปฏิบัติได้ รวมถึงการตรวจสอบการเชื่อมต่อเครือข่าย การตรวจสอบบันทึกของเซิร์ฟเวอร์และไคลเอนต์ การปรับการตั้งค่าการหมดเวลาของเซิร์ฟเวอร์ การเพิ่มขนาดแพ็กเก็ตสูงสุดที่อนุญาต ฯลฯ ซึ่งแต่ละขั้นตอนเราได้พูดคุยกันโดยละเอียด
แม้ว่าอาจต้องใช้การลองผิดลองถูกบ้างเพื่อค้นหาวิธีแก้ปัญหาที่แน่นอน แต่ด้วยแนวทางการแก้ไขปัญหาอย่างเป็นระบบ คุณสามารถคืนความเสถียรให้กับการเชื่อมต่อเซิร์ฟเวอร์ MySQL ของคุณ รับประกันการโต้ตอบกับฐานข้อมูลที่ราบรื่นยิ่งขึ้น และลดการหยุดชะงักในการทำงานของคุณ