כיצד לתקן את שגיאת 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";'

זה יראה לנו משהו כזה:

+ ----------------- + ------- + | משתנה_שם | ערך | + ----------------- + ------- + | חיבורים מקסימליים | 151 | + ----------------- + ------- +

במילים אחרות, המגבלה הנוכחית היא 151 חיבורים, ובכן, בואו נעלה אותה ל -500 באמצעות שאילתה:

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

מוכן!

הבעיה בדרך זו היא שכאשר השירות מופעל מחדש, תצורה זו הולכת לאיבוד.

כדי לספק פרט זה תוכלו ליצור סקריפט bash שבכל פעם X מאמת, או אפילו להוסיף את השורה לחסימת ההתחלה או ההפעלה מחדש של הדמון 😉

אבל אז למה אני רוצה לדעת את האפשרות השנייה הזו? ... טוב, זה מה שהייתי אומר. אבל לפני חודש שרת אובונטו התעלם משיטה מס '2, אז ... במקרים קיצוניים של מערכת הפעלה מטופשת, יש לנו את האפשרות השנייה הזו שעובדת באותה מידה 😉


תוכן המאמר עומד בעקרונותינו של אתיקה עריכתית. כדי לדווח על שגיאה לחץ כאן.

6 תגובות, השאר את שלך

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   נקס דיג'ו

    פוסט טוב, MySql ... הם משתמשים הרבה ב- FreeBSD, .... KZKG ^ Gaara?, ... זה יהיה טוב אם תפרסם פוסט, כיצד להתקין ולהגדיר את MySql ב- FreeBSD כמו: SSH (מאובטח - מעטפת), SSH (דרך האינטרנט), SFTP (פרוטוקול העברת קבצים SSH), אפאצ'י - PHP- הרחבות MySql, PHP5 ו- PhpSysInfo.

    1.    KZKG ^ גאארה דיג'ו

      בשביל זה אצטרך להתקין את FreeBSD, אני לא חושב שיש לי את הזמן כרגע, פשוט החלפתי עבודה ויש לי הרבה אחריות חדשה 🙁

  2.   שאול דיג'ו

    לאחרונה הייתי צריך לעשות משהו דומה לפרויקט עם nodejs. במקרה שלי זה עלה ל -250 וזה הספיק לי, לעת עתה אני מסתדר בסדר. תודה על המידע

  3.   פרנסיסקו דיג'ו

    שלום, האם תוכל לעזור לי כיצד להזין /etc/mysql/my.cfg?

    יש לי VPS, אבל אני לא יכול להיכנס עם PUTTY.

    ברכות.

  4.   פְּתָיוֹן דיג'ו

    כדי לפתור את הבעיה של האפשרות 1.- הגיבו, ולשמור על השינויים בעת הפעלה מחדש של השרת, יש לערוך את הקובץ לפי הגרסה:

    ////////////////////////////////////////////////// ////////////////////
    // שנה ספריה באובונטו 16.04 ////////////////////////
    ////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // שנה ספריה באובונטו 15.04 ////////////////////////
    ////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // אני משנה את הספריה באובונטו ישנה //////////////////////////
    ////////////////////////////////////////////////// ////////////////////

    vi /etc/mysql/my.cnf

    ////////////////////////////////////////////////// ////////////////////
    // הוסף שורה זו תחת התג [mysqld] או [mysql] //
    // ואז הפעל מחדש את השרת //
    ////////////////////////////////////////////////// ////////////////////
    max_connections = 500

  5.   מִתרַעֵם דיג'ו

    הדרכה מאפס בשום זמן לא אומרת לך כיצד לשנות אותה