วิธีแก้ไขข้อผิดพลาด MySQL: การเชื่อมต่อมากเกินไป

บทนำสู่ข้อผิดพลาด MySQL: การเชื่อมต่อมากเกินไป

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

mysqli_connect(): (HY000/1040): Too many connections

MySQL: ข้อผิดพลาดการเชื่อมต่อมากเกินไปหมายความว่าอย่างไร

หมายความว่ามีคำขอเข้ามาที่ MySQL มากเกินไปเกินกว่าที่จะรับได้เกินกว่าที่จะเข้าคิวหรือรอได้

ต้องแก้ยังไง?

ง่ายๆเราต้องเพิ่มขีด จำกัด สูงสุดของคำขอ (การเชื่อมต่อ) ที่ MySQL รองรับ

ฉันจะให้คุณสองทางเลือกในการแก้ไขปัญหานี้:

1. เราแก้ไขไฟล์ /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

ในนั้นเราใส่สิ่งต่อไปนี้ไว้ใต้ที่ระบุว่า [mysql]:

max_connections = 500 max_user_connections = 500

สิ่งนี้จะเพิ่มจำนวนการเชื่อมต่อสูงสุดจาก 100 (ซึ่งเป็นค่าเริ่มต้น) เป็น 500

เราบันทึกและออกจากนั้นเราเริ่มบริการ MySQL ใหม่และนั่นแหล่ะ การเปลี่ยนแปลงนี้มีผลถาวร

2. อีกวิธีหนึ่งในการแก้ปัญหานี้คือการเปลี่ยนขีด จำกัด สูงสุดให้เท่ากับ แต่ใช้แบบสอบถาม MySQL

ก่อนอื่นให้แสดงขีด จำกัด ปัจจุบัน:

mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'

สิ่งนี้จะแสดงให้เราเห็นสิ่งนี้:

+ ----------------- + ------- + | Variable_name | มูลค่า | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

กล่าวอีกนัยหนึ่งขีด จำกัด ปัจจุบันคือ 151 การเชื่อมต่อทีนี้ลองเพิ่มเป็น 500 โดยใช้แบบสอบถาม:

mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'

พร้อม!

ปัญหาในลักษณะนี้คือเมื่อเริ่มบริการใหม่การกำหนดค่านี้จะหายไป

ในการให้รายละเอียดนี้คุณสามารถสร้าง bash script ที่ทุกครั้งที่ X ตรวจสอบหรือแม้แต่เพิ่มบรรทัดในบล็อกเริ่มต้นหรือรีสตาร์ทของ daemon 😉

แต่ทำไมฉันถึงอยากรู้ตัวเลือกที่ 2 นี้ล่ะ? ... นั่นคือสิ่งที่ฉันเคยพูด แต่เดือนที่แล้วเซิร์ฟเวอร์ Ubuntu เพิกเฉยต่อวิธีที่ 1 ดังนั้น ... ในกรณีที่ระบบปฏิบัติการโง่ ๆ เรามีตัวเลือกที่ 2 ที่ใช้งานได้ดีเช่นกัน😉


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   NEX dijo

    โพสต์ดี MySql ... พวกเขาใช้มากใน FreeBSD, … .KZKG ^ Gaara?, …มันจะดีถ้าคุณโพสต์เกี่ยวกับวิธีการติดตั้งและกำหนดค่า MySql ใน FreeBSD เช่น: SSH (secure - shell), SSH ( ผ่านทางเว็บ), SFTP (SSH-File Transfer Protocol), Apache - PHP- MySql, PHP5 และ PhpSysInfo Extensions

    1.    KZKG ^ กาอาระ dijo

      สำหรับสิ่งนี้ฉันจะต้องติดตั้ง FreeBSD ฉันไม่คิดว่าฉันจะมีเวลาตอนนี้ฉันเพิ่งเปลี่ยนงานและฉันมีความรับผิดชอบใหม่มากมาย🙁

  2.   ซาอูล dijo

    เมื่อเร็ว ๆ นี้ฉันต้องทำสิ่งที่คล้ายกันสำหรับโปรเจ็กต์ที่มี nodejs ในกรณีของฉันมันเพิ่มขึ้นเป็น 250 และนั่นก็เพียงพอแล้วสำหรับฉันตอนนี้ฉันสบายดี ขอบคุณสำหรับข้อมูล

  3.   ฟรานซิส dijo

    สวัสดีคุณช่วยฉันป้อน /etc/mysql/my.cfg ได้อย่างไร

    ฉันมี VPS แต่ไม่สามารถเข้ากับ PUTTY ได้

    อาศิรพจน์

  4.   เหยื่อ dijo

    ในการแก้ปัญหาของตัวเลือก 1.- ตัวเลือกแสดงความคิดเห็นและเก็บการเปลี่ยนแปลงเมื่อรีสตาร์ทเซิร์ฟเวอร์ไฟล์จะต้องได้รับการแก้ไขตามเวอร์ชัน:

    ////////////////////////////////////////////////// ////////////////////
    // เปลี่ยนไดเร็กทอรีใน Ubuntu 16.04 //////////////////////
    ////////////////////////////////////////////////// ////////////////////
    ฉันเห็น /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // เปลี่ยนไดเร็กทอรีใน Ubuntu 15.04 //////////////////////
    ////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // ฉันเปลี่ยนไดเร็กทอรีใน Ubuntu เก่า ////////////////////////
    ////////////////////////////////////////////////// ////////////////////

    ฉันเห็น /etc/mysql/my.cnf

    ////////////////////////////////////////////////// ////////////////////
    // เพิ่มบรรทัดนี้ใต้แท็ก [mysqld] หรือ [mysql] //
    // จากนั้นรีสตาร์ทเซิร์ฟเวอร์ //
    ////////////////////////////////////////////////// ////////////////////
    สูงสุด_การเชื่อมต่อ = 500

  5.   ไม่พอใจ dijo

    บทช่วยสอนตั้งแต่เริ่มต้นในเวลาไม่นานจะบอกวิธีการเปลี่ยนแปลง