Johdanto MySQL-virheeseen: Liian monta yhteyttä
Kun sinulla on verkkosovellus (sivusto, blogi, foorumi jne.), Jolla on suuri kysyntä eli jossa käy suuri määrä käyttäjiä, tämä tarkoittaa lisääntynyttä palvelimen kulutusta. Jos mainittu verkkosovellus käyttää MySQL-tietokantaa ja kyselyitä on todella paljon (johtuen verkon huonosta ohjelmoinnista tai siitä, että monet webiä käyttävät käyttäjät ovat), on mahdollista, että MySQL näyttää tämän virheen:
mysqli_connect(): (HY000/1040): Too many connections
Mitä MySQL: Liian monet yhteydet -virhe tarkoittaa?
Se tarkoittaa, että liian monta pyyntöä tulee MySQL: ään, enemmän kuin se voi hyväksyä, enemmän kuin se voi jonottaa tai odottaa.
Kuinka ratkaista se?
Yksinkertainen, meidän on lisättävä MySQL: n tukemien pyyntöjen (yhteyksien) enimmäismäärää.
Annan sinulle kaksi vaihtoehtoa ongelman korjaamiseksi:
1. Muokkaamme tiedostoa /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
Siinä laitamme seuraavan kohtaan, jossa sanotaan [mysql]:
max_connections = 500 max_user_connections = 500
Tämä kasvattaa yhteyksien enimmäismäärää 100: sta (mikä on oletus) 500: een.
Tallennamme ja poistumme, käynnistämme sitten MySQL-palvelun uudelleen ja siinä kaikki. Tämä muutos on pysyvä.
2. Toinen tapa ratkaista tämä ongelma on muuttaa enimmäisrajaa yhtä suureksi, mutta MySQL-kyselyn avulla.
Näytetään ensin nykyinen raja:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Tämä näyttää meille jotain tällaista:
+ ----------------- + ------- + | Muuttujan_nimi | Arvo | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
Toisin sanoen, nykyinen raja on 151 yhteyttä, nostetaan se 500: een kyselyn avulla:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Ready!
Tällä tavalla ongelmana on, että kun palvelu käynnistetään uudelleen, tämä kokoonpano menetetään.
Tämän yksityiskohdan toimittamiseksi voit tehdä bash-komentosarjan, joka tarkistaa joka X-kerta, tai jopa lisätä rivin daemonin aloitus- tai uudelleenkäynnistyslohkoon 😉
Mutta miksi sitten haluan tietää tämän toisen vaihtoehdon? ... no, niin sanoin. Mutta kuukausi sitten Ubuntu Server ohitti menetelmän nro 2, joten ... äärimmäisissä tapauksissa typerässä käyttöjärjestelmässä meillä on tämä toinen vaihtoehto, joka toimii yhtä hyvin 😉
Hyvä viesti, MySql ... he käyttävät paljon FreeBSD: ssä, ... .KZKG ^ Gaara?, ... Olisi hyvä, jos kirjoitat viestin siitä, kuinka MySql asennetaan ja määritetään FreeBSD: ssä, kuten: SSH (suojattu - shell), SSH ( Webin kautta), SFTP (SSH-File Transfer Protocol), Apache - PHP- MySql, PHP5 ja PhpSysInfo-laajennukset.
Tätä varten minun olisi asennettava FreeBSD, en usko, että minulla on aikaa juuri nyt, vaihdoin vain työpaikkaa ja minulla on paljon uusia tehtäviä 🙁
Minun piti äskettäin tehdä jotain vastaavaa projektille, jossa oli nodejs. Minun tapauksessani se nousi 250: een ja se riitti, toistaiseksi menen hyvin. Kiitos tiedoista
Hei, voisitko auttaa minua kuinka kirjoittaa /etc/mysql/my.cfg?
Minulla on VPS, mutta en pääse sisään PUTTYn kanssa.
Tervehdys.
Vaihtoehto 1. - Kommentoitu -vaihtoehdon ongelman ratkaisemiseksi ja muutosten säilyttämiseksi palvelimen uudelleenkäynnistyksen yhteydessä tiedostoa on muokattava version mukaan:
//////////////////////////////////////////////////// //// ////////////////////
// Muutan hakemistoa Ubuntussa 16.04 //////////////////////////
//////////////////////////////////////////////////// //// ////////////////////
Näin /etc/mysql/mysql.conf.d/mysqld.cnf
//////////////////////////////////////////////////// //// ////////////////////
// Muutan hakemistoa Ubuntussa 15.04 //////////////////////////
//////////////////////////////////////////////////// //// ////////////////////
vi /etc/mysql/mariadb.conf.d/mysqld.cnf
//////////////////////////////////////////////////// //// ////////////////////
// Muutan hakemistoa vanhassa Ubuntussa //////////////////////////
//////////////////////////////////////////////////// //// ////////////////////
Näin /etc/mysql/my.cnf
//////////////////////////////////////////////////// //// ////////////////////
// lisää tämä rivi tagin [mysqld] tai [mysql] alle //
// Käynnistä palvelin sitten uudelleen //
//////////////////////////////////////////////////// //// ////////////////////
max_connections = 500
Opetusohjelma tyhjästä ei missään vaiheessa kerro, kuinka sitä muutetaan