วิธีแก้ไขข้อผิดพลาด MySQL 2013: สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL

เผยแพร่แล้ว: 2024-03-26

เมื่อคุณเรียกใช้การสืบค้น MySQL จำนวนมาก คุณอาจพบข้อผิดพลาด MySQL 2013: สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในระหว่างการสืบค้น รหัสข้อผิดพลาดนี้จะปรากฏขึ้นเมื่อการเชื่อมต่อระหว่างเครื่องมือหรือแอปพลิเคชันของคุณกับเซิร์ฟเวอร์ MySQL หายไปหรือสูญหาย

เพื่อให้เข้าใจถึงปัญหานี้ สิ่งสำคัญคือต้องทราบว่า MySQL จัดการการสื่อสารระหว่างซอฟต์แวร์ที่คุณใช้กับเซิร์ฟเวอร์ MySQL อย่างไร มีกฎและการตั้งค่าบางอย่าง เช่น การหมดเวลา ซึ่งกำหนดระยะเวลาที่เซิร์ฟเวอร์จะรอคำตอบ ฯลฯ นอกจากการตั้งค่าทางเทคนิคเหล่านี้แล้ว ปัจจัยภายนอก เช่น ความน่าเชื่อถือของเครือข่ายและโหลดของเซิร์ฟเวอร์ยังมีบทบาทสำคัญในการโต้ตอบที่ราบรื่นระหว่างไคลเอนต์ของคุณกับ MySQL เซิร์ฟเวอร์

การจับความแตกต่างของข้อผิดพลาด MySQL ปี 2013 ต้องใช้ข้อมูลเชิงลึกทางเทคนิคเล็กน้อย แต่ยิ่งไปกว่านั้น ยังต้องใช้ความอดทนและความเต็มใจที่จะทำงานด้านนักสืบด้านไอทีอีกด้วย ในบทความนี้ เราจะพูดถึงวิธีแก้ไขข้อผิดพลาด MySQL ปี 2013: สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในระหว่างปัญหาการสืบค้น

การเปลี่ยนแปลงของข้อผิดพลาด MySQL 2013

ข้อผิดพลาด “สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระหว่างการสืบค้น” อาจแสดงในรูปแบบที่แตกต่างกัน ต่อไปนี้คือรูปแบบบางส่วนของข้อความที่อาจปรากฏบนหน้าจอของคุณ:

  1. 2013 – สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL เมื่อ 'อ่านแพ็คเก็ตการสื่อสารเริ่มต้น' ข้อผิดพลาดของระบบ: 0 2013 - สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL เมื่อ 'อ่านแพ็กเก็ตการสื่อสารเริ่มต้น' ข้อผิดพลาดของระบบ: 0

    รูปแบบข้อผิดพลาดนี้มักจะปรากฏขึ้นตั้งแต่เนิ่นๆ เมื่อไคลเอนต์ของคุณพยายามเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ส่วน “ข้อผิดพลาดของระบบ: 0” อาจดูลึกลับเล็กน้อย แต่โดยพื้นฐานแล้วมันเป็นวิธีของ MySQL ในการบอกคุณว่า “มีบางอย่างไม่ถูกต้อง แต่ฉันไม่สามารถระบุปัญหาได้”

  2. สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ที่ 'กำลังรอแพ็กเก็ตการสื่อสารเริ่มต้น' ข้อผิดพลาดของระบบ: 100

    เช่นเดียวกับรูปแบบแรก ข้อผิดพลาดนี้จะปรากฏขึ้นในระหว่างขั้นตอนการเชื่อมต่อเริ่มต้น อย่างไรก็ตาม “ข้อผิดพลาดของระบบ: 100” ชี้ไปที่ปัญหาการหมดเวลา ซึ่งหมายความว่าเซิร์ฟเวอร์รอนานเกินไปสำหรับแพ็กเก็ตการสื่อสารเริ่มต้นจากไคลเอนต์และปิดการเชื่อมต่อ

  3. สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในระหว่างการสืบค้น สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในระหว่างการสืบค้น

    อันนี้ตรงไปตรงมากว่านี้เล็กน้อย มันเกิดขึ้นในขณะที่คุณกำลังเรียกใช้แบบสอบถาม และทันใดนั้น การเชื่อมต่อกับเซิร์ฟเวอร์ก็หยุดลง ไม่ว่าจะเป็นการดำเนินการ SELECT แบบธรรมดาหรือการดำเนินการ JOIN ที่ซับซ้อนมากขึ้น เซิร์ฟเวอร์ก็ไม่สามารถเข้าถึงได้ในทันที

  4. 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` เพื่อตรวจสอบปัญหาเส้นทางเครือข่ายหรือเวลาแฝงที่อาจทำให้การเชื่อมต่อหลุด

ตรวจสอบบันทึกของเซิร์ฟเวอร์และไคลเอนต์

ตรวจสอบบันทึกทั้งฝั่งเซิร์ฟเวอร์และคอมพิวเตอร์ ค้นหาข้อความแสดงข้อผิดพลาดหรือคำเตือนในช่วงเวลาที่การเชื่อมต่อขาดหาย บันทึกเหล่านี้สามารถให้คำแนะนำที่สำคัญเกี่ยวกับสาเหตุของปัญหาได้

เรียกใช้โซลูชันทางเทคนิค

ปรับการตั้งค่าการหมดเวลาของเซิร์ฟเวอร์

  1. เข้าถึงไฟล์การกำหนดค่าเซิร์ฟเวอร์ MySQL ของคุณ (` my.cnf ` หรือ ` my.ini ` ขึ้นอยู่กับระบบปฏิบัติการของคุณ)
  2. ค้นหาส่วน ` [mysqld] ` และเพิ่มหรือแก้ไขบรรทัดต่อไปนี้เพื่อเพิ่มค่าการหมดเวลาของคุณ:

     wait_timeout = 28800
    net_read_timeout = 120
  3. รีสตาร์ทเซิร์ฟเวอร์ MySQL ของคุณเพื่อใช้การเปลี่ยนแปลงเหล่านี้

เพิ่มขนาดแพ็กเก็ตสูงสุดที่อนุญาต

ปัญหาการเชื่อมต่ออาจเกิดขึ้นได้หากข้อมูลที่ส่งเกินขนาดแพ็กเก็ตสูงสุดที่อนุญาตของ MySQL โดยเฉพาะอย่างยิ่งเมื่อมีการสืบค้นข้อมูลจำนวนมาก

  1. เชื่อมต่อกับเซิร์ฟเวอร์ MySQL ของคุณโดยใช้เครื่องมือไคลเอ็นต์ เช่น MySQL Workbench หรือบรรทัดคำสั่ง
  2. ดำเนินการคำสั่ง SQL ต่อไปนี้เพื่อเพิ่ม ขนาด ` max_allowed_packet` (ปรับตามความต้องการของคุณ)

    ตั้งค่า GLOBAL max_allowed_packet = 1073741824;
  3. หรือคุณสามารถตั้งค่านี้อย่างถาวรในไฟล์การกำหนดค่าเซิร์ฟเวอร์ MySQL ของคุณภายใต้ส่วน `[mysqld]` เป็น `max_allowed_packet=1073741824` จากนั้นรีสตาร์ทเซิร์ฟเวอร์ของคุณ

กำหนดค่าไฟร์วอลล์และซอฟต์แวร์ป้องกันไวรัส

  1. ตรวจสอบการตั้งค่าไฟร์วอลล์และซอฟต์แวร์ป้องกันไวรัสทั้งในด้านคอมพิวเตอร์และเซิร์ฟเวอร์
  2. เพิ่มข้อยกเว้นสำหรับพอร์ตเริ่มต้นของ MySQL (3306) และพอร์ตที่กำหนดเองที่คุณใช้
  3. ตรวจสอบให้แน่ใจว่าไฟล์ปฏิบัติการ MySQL ได้รับอนุญาตผ่านไฟร์วอลล์ และไม่ถูกตั้งค่าสถานะโดยซอฟต์แวร์ป้องกันไวรัส

เพิ่มประสิทธิภาพเซิร์ฟเวอร์ MySQL

  1. วิเคราะห์และเพิ่มประสิทธิภาพการสืบค้นฐานข้อมูลของคุณเพื่อประสิทธิภาพ พิจารณาคอลัมน์การจัดทำดัชนีที่ใช้ใน JOIN และส่วนคำสั่ง WHERE
  2. ตรวจสอบการใช้ทรัพยากรของเซิร์ฟเวอร์ของคุณและปรับการตั้งค่าเพื่อการจัดสรรทรัพยากรที่ดีขึ้น (เช่น ` innodb_buffer_pool_size `, ` query_cache_size `)
  3. พิจารณาปรับขนาดฮาร์ดแวร์เซิร์ฟเวอร์ของคุณหรือใช้แบบจำลองการอ่านเพื่อกระจายโหลด

การเพิ่มประสิทธิภาพเซิร์ฟเวอร์ MySQL อาจช่วยสถานการณ์ได้ เนื่องจากเซิร์ฟเวอร์มีภาระงานหนัก เซิร์ฟเวอร์อาจยุติการเชื่อมต่อเพื่ออนุรักษ์ทรัพยากร ซึ่งนำไปสู่ข้อผิดพลาด 2013

ใช้การเชื่อมต่อแบบถาวร

  1. ในการตั้งค่าการเชื่อมต่อฐานข้อมูลของแอปพลิเคชันของคุณ ให้เปิดใช้งานการใช้การเชื่อมต่อแบบถาวร ตัวเลือกนี้จะแตกต่างกันไปขึ้นอยู่กับภาษาการเขียนโปรแกรมและไลบรารีการเข้าถึงฐานข้อมูลที่คุณใช้
  2. ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ MySQL ของคุณได้รับการกำหนดค่าให้รองรับการเชื่อมต่อถาวรตามจำนวนที่คาดไว้ โดยการปรับการตั้งค่า ` max_connections ` หากจำเป็น

มีเพียงการทำงานผ่านปัญหาที่อาจเกิดขึ้นเหล่านี้อย่างเป็นระบบเท่านั้น คุณจึงสามารถพบวิธีแก้ปัญหาที่ทำให้การเชื่อมต่อของคุณเสถียรและทำให้การโต้ตอบฐานข้อมูลของคุณทำงานได้อย่างราบรื่น

ห่อ

ข้อผิดพลาด MySQL 2013: สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระหว่างการสืบค้น นี่อาจดูน่าปวดหัวเมื่อมองแวบแรก ด้วยการทำความเข้าใจสาเหตุสำคัญที่อยู่เบื้องหลังปัญหานี้ เช่น ปัญหาเครือข่าย ปัญหาการกำหนดค่าเซิร์ฟเวอร์หรือไคลเอนต์ ไฟร์วอลล์หรือโปรแกรมป้องกันไวรัสรบกวน และเซิร์ฟเวอร์โอเวอร์โหลด คุณสามารถเริ่มแก้ไขสาเหตุหลักได้

ขั้นตอนที่ปฏิบัติได้ รวมถึงการตรวจสอบการเชื่อมต่อเครือข่าย การตรวจสอบบันทึกของเซิร์ฟเวอร์และไคลเอนต์ การปรับการตั้งค่าการหมดเวลาของเซิร์ฟเวอร์ การเพิ่มขนาดแพ็กเก็ตสูงสุดที่อนุญาต ฯลฯ ซึ่งแต่ละขั้นตอนเราได้พูดคุยกันโดยละเอียด

แม้ว่าอาจต้องใช้การลองผิดลองถูกบ้างเพื่อค้นหาวิธีแก้ปัญหาที่แน่นอน แต่ด้วยแนวทางการแก้ไขปัญหาอย่างเป็นระบบ คุณสามารถคืนความเสถียรให้กับการเชื่อมต่อเซิร์ฟเวอร์ MySQL ของคุณ รับประกันการโต้ตอบกับฐานข้อมูลที่ราบรื่นยิ่งขึ้น และลดการหยุดชะงักในการทำงานของคุณ