mysql regola automaticamente i valori massimi delle connessioni


11

Ho impostato connessioni massime a circa 2000 nel file my.cnf.

max_connections=2048

Ho aggiornato a 5.5.20 e ora vedo la seguente riga nel registro degli errori.

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

Perché mysql ha cambiato il valore delle connessioni massime in 214?

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

I file soft e hard open limitati dal sistema operativo sono 1024

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

Il numero di connessioni massime effettivamente utilizzate:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+

1
Prova a impostare i file aperti ulimit più in alto, come 4096.ulimit -n 4096

Il comportamento è cambiato? Avevo la versione 5.0.77 e non ho notato questo problema. È solo quando ho aggiornato a 5.5.20 che ho cambiato i valori!
shantanuo,

1
Chiederò solo l'ovvio. Hai confermato che l'aggiornamento non ha cambiato il tuo my.cnf? Inoltre, quale sistema operativo? È stato installato da un gestore di pacchetti come yum? In tal caso, quale pacchetto?
Derek Downey,

Risposte:


6

Mi sembra a posto. Non puoi avere max_connections più grandi di quello, perché open_files_limit è troppo basso. Per ogni connessione MySQL apre diversi file. Dai un'occhiata qui .

Pertanto, dovrai aumentare il limite di file aperti sul tuo sistema operativo e, successivamente, puoi impostare un valore max_connections più elevato.


5

Questo sembra essere lo stesso problema a cui ho risposto in StackOverflow qui , anche se stavo usando CentOS 7 e MySQL 5.6.26

È necessario aumentare il limite dei file aperti sia per l'utente mysql (in limits.conf) che per il servizio mysql (nel file mysql.service)

aggiungi queste due righe a /etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

aggiungi questa riga a /usr/lib/systemd/system/mysqld.service (nella sezione [servizio])

LimitNOFILE=65535

quindi riavviare e verificare che quei messaggi di errore siano scomparsi dal registro degli errori di mysql.



@Nav - Sì, non puoi usare il numero massimo di connessioni configurate se il tuo sistema operativo non consente a mysqld di utilizzare il numero appropriato di handle di file
MNB

Inoltre, Ubuntu 15.04+ richiede un approccio diverso: stackoverflow.com/questions/23977095/…
Nav

0

Questo sembra essere un bug nel nuovo mysqld. Ho avuto lo stesso problema. L'impostazione di max_connections su 700 ha funzionato, ma se l'ho impostato su 900, è stato reimpostato su 214 durante l'avvio. Se si fosse trattato di un cambiamento intenzionale, l'avrebbe abbassato a 700 o qualcosa di simile, il valore 214 non ha senso.
Ad ogni modo, aumentando il limite del descrittore con ulimit -n risolve il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.