NEWS
SQL: Connections läuft hoch und sperrt DB
-
Hallo Zusammen,
ich habe im IOBroker den SQL-Adapter aktiviert und mit meiner MariaDB verbunden. Die MariaDB läuft auf einem dedizierten Host zusammen mit dem Host vopn Grafana. Ich protokolierte ein paar tausend Zustände. Die DB lief seit einiger Zeit immer wieder auf den Fehler "Too many connections". Max_connections hatte ich auf 100.000 (!) gestellt. Nach einem Neustart konnte ich beobachten, wie der Wert "connections" im DB-Status verfolgen, wie sie wächst, bis auf ca. 160.000 (!) bis der Fehler "Too many connections" wieder kam und die DB sperrte. Das dauerte nicht besonders lange, vielleicht eine Stunde. Ich habe dann die Anzahl der zu protokollierende Zustände auf ca. 700 begrenzt. Aber das Problem tritt immer noch auf. Bin nach 30 Minuten schon wieder bei 6000 connections.
Kennt jemand das Phänomen? Habe ich etwas falsch konfiguriert?
Hier die Jason des SQL-Adapters:
{ "connLink": "", "debounce": 1000, "retention": 0, "host": "192.168.12.xxx", "port": 3306, "user": "iobroker", "password": "pw", "dbtype": "mysql", "fileName": "sqlite.db", "requestInterval": 0, "encrypt": false, "round": 4, "dbname": "iobroker", "multiRequests": true, "maxConnections": 200000, "changesRelogInterval": 0, "changesMinDelta": 0, "writeNulls": true, "doNotCreateDatabase": false, "maxLength": 0, "blockTime": 0, "debounceTime": 0, "disableSkippedValueLogging": false, "enableLogging": false, "rejectUnauthorized": false, "customRetentionDuration": 365 }MOD-EDIT: Code in code-tags gesetzt!
-
@axel sagte in SQL: Connections läuft hoch und sperrt DB:
ich habe im IOBroker den SQL-Adapter aktiviert
Welche Version !?
Ich protokolierte ein paar tausend Zustände.
Wieviel Datenpunkte sind dann in IoBroker /SQL aktiviert ?
Hast du das in der Datenbank eingestellt , das hat mir auch mal geholfen , aber ich bin aber schon lange auf Influx gewechselt , war stabiler :
https://stackoverflow.com/questions/22285318/how-to-unblock-with-mysqladmin-flush-hosts/22288338
-
Besten Dank für Deine Tips. Ich setze die Version 2.2 ein und habe ca. 700 Datenpunkte aktiviert.
Mir ist aber was anderen aufgefallen: Es gibt min. 2 Variablen in der DB zu den Connections: Max_Connections und Max_usd_connections. Max_connections läuft hoch (über 200.000 in 3 Tagen) und Max_used_connections (aktuell 87 und stabil). Die Verwendung ist mir nicht klar, auch nicht, wann denn die Schnittstelle blockiert mit "Too_many_connections"... Im moment läuft es stabil. Fahre die Datenpunkte jetzt langsam wieder hoch.
Die Sache mit Influx werde ich auch mal prüfen. Ich mache Auswertungen mit Grafana und da scheint Influx besser geeignet zu. Wewlches SQL-Tool benutzt Du da? Ich nutze HeidiSQL.
-
Besten Dank für Deine Tips. Ich setze die Version 2.2 ein und habe ca. 700 Datenpunkte aktiviert.
Mir ist aber was anderen aufgefallen: Es gibt min. 2 Variablen in der DB zu den Connections: Max_Connections und Max_usd_connections. Max_connections läuft hoch (über 200.000 in 3 Tagen) und Max_used_connections (aktuell 87 und stabil). Die Verwendung ist mir nicht klar, auch nicht, wann denn die Schnittstelle blockiert mit "Too_many_connections"... Im moment läuft es stabil. Fahre die Datenpunkte jetzt langsam wieder hoch.
Die Sache mit Influx werde ich auch mal prüfen. Ich mache Auswertungen mit Grafana und da scheint Influx besser geeignet zu. Wewlches SQL-Tool benutzt Du da? Ich nutze HeidiSQL.
@axel sagte in SQL: Connections läuft hoch und sperrt DB:
Besten Dank für Deine Tips. Ich setze die Version 2.2 ein und habe ca. 700 Datenpunkte aktiviert.
Mir ist aber was anderen aufgefallen: Es gibt min. 2 Variablen in der DB zu den Connections: Max_Connections und Max_usd_connections. Max_connections läuft hoch (über 200.000 in 3 Tagen) und Max_used_connections (aktuell 87 und stabil). Die Verwendung ist mir nicht klar, auch nicht, wann denn die Schnittstelle blockiert mit "Too_many_connections"... Im moment läuft es stabil. Fahre die Datenpunkte jetzt langsam wieder hoch.
Die Sache mit Influx werde ich auch mal prüfen. Ich mache Auswertungen mit Grafana und da scheint Influx besser geeignet zu. Wewlches SQL-Tool benutzt Du da? Ich nutze HeidiSQL.
Moin,
ich misch' mich da mal ein, weil ich gern etwas lerne.
Ich glaube, Du verwechselst etwas, die
max connection, die die dann auch zur besagten Fehlermeldung führen, kommen vommariaDB Serverdas kannst Du abfragen, wenn Du Dir mittels GUI Tool (HeidiSQL) oder ich nutzeDBeaverdas eingibst.SHOW variables;Dies ist bei einem nicht angepassten Datenbankserver 150 + 1 für den root Zugriff, es gibt die Möglichkeit das zu verändern, indem man an passender Stelle, bei meiner
mariaDBauf einemArch LinuxLXC Container wäre das in# vim /etc/my.cnf.d/server.cnf # [mysqld] max_connections=[desired new maximum number]Wenn man diesen Parameter ändert, sollte man auch den RAM Verbrauch im Auge behalten, auf kleinen Servern ist ein anheben auf ~200 sicher zu verkraften, größere auch gern 500 - 1000.
Das, was ich glaube, was Du bei Dir eingestellt hast, ist auf der Client Seite die Max. Gleichzeitig geöffneten Verbindungen

Das ist dann natürlich irgendwann zu viel für den Server, alle Clients sollten in Summe
max_connectiondes Servers nicht überschreiten.Da ich bis auf das JSON nichts gesehen habe, kann ich hier nur vermuten, aber mit Deiner Aussage, dass Du aktuell 87
max_used_connectionhast, gehe ich davon aus, dass ich nicht so falsch liege.Schraube mal die max connection im Adapter wieder runter, wenn Du da wirklich 200000 eingetragen hast.
VG
Bernd
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden