
Auf meinem Server habe ich 7 Datenbanken. Unser Server hat 512 MB RAM, den ich heute Abend auf 2 GB aufrüste, und verfügt über einen 2,4-Zoll-Einzelprozessor.
Ich habe eine Fehlermeldung erhalten, dass das Verbindungslimit überschritten wurde. Ist es in Ordnung, mit der Erhöhung meines RAM auch die Anzahl der Verbindungen zu erhöhen? Derzeit ist sie auf 200 eingestellt, aber eine einzelne Seite kann unter Berücksichtigung von JOINs und dergleichen eine Verbindung zu 3-4 Datenbanken herstellen.
Wir haben so viele Datenbanken nur zur Organisation eingerichtet. Wir haben insgesamt etwa 250-300 Tabellen in allen Datenbanken.
Ich bin für jeden Rat dankbar :)
Aktualisieren
Es stellte sich heraus, dass ich viel mehr Verbindungen habe, als ich dachte …
Sind 50 Benutzerverbindungen mit 2 GB RAM und einem 2,4-Single-Core genau oder sollte ich das erhöhen?
[mysqld]
safe-show-database
skip-locking
safe-show-database
interactive_timeout=30
wait_timeout=30
connect_timeout=10
max_user_connections=50
max_connections=1000
key_buffer=64M
join_buffer=2M
record_buffer=2M
sort_buffer=4M
max_allowed_packet=24M
query_cache_limit = 2M
query_cache_size = 64M
query_cache_type = 1
tmp_table_size=128M
table_cache=2048
thread_cache=256
thread_concurrency=1
Antwort1
Sie sollten in der Lage sein, Ihre Verbindungen erheblich zu erhöhen. Wenn Sie jedoch die Speichernutzung pro Thread nicht richtig optimieren, besteht die Gefahr, dass MySQL nicht genügend Speicher hat. Ein zu geringer Speicher für MySQL kann eine katastrophale Situation sein und sollte am besten vermieden werden.
Ein Beispiel dafür, was passiert, wenn Sie nicht richtig abstimmen:
MySQL wird ständig neu gestartet, da nicht genügend Arbeitsspeicher vorhanden ist
Einige meiner früheren Tuning-Empfehlungen:
Wie stelle ich meine.cnf in Mysql ein, damit es keine Verbindungsbeschränkungen gibt?
Der Link zuInnoDB-Speichernutzungenthält eine Formel zur Berechnung der InnoDB-Speichernutzung, die Sie in eine Tabelle einfügen können, um die Speichernutzung pro Thread zu berechnen.
Hier noch ein paar Informationen zuMySQL-Server-Speichernutzung.
Ihr Ziel sollte letztendlich darin bestehen, Ihren maximalen Speicherverbrauch pro Thread basierend auf Ihrer Konfiguration zu berechnen. Sobald dies berechnet ist, können Sie Ihre maximale Anzahl an Verbindungen auf den richtigen Wert einstellen.
Antwort2
Auf 1-GB-Maschinen setzen wir max_connections routinemäßig und problemlos auf 750
Antwort3
Wenn Sie PHP verwenden, bearbeiten Sie die PHP-Konfigurationsdatei (normalerweise unter /etc/php.ini) und ändern Sie die Persistenz auf AUS.
[MySQL] ; Dauerhafte Links zulassen oder verhindern. mysql.allow_persistent = Aus
Das ist alles. Starten Sie Apache neu.