<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=DE link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Hallo Zusammen,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>ich kann mittlerweile nur noch müßig aufs Frontend zugreifen. Erst nach mehrmaligen Laden.<o:p></o:p></p><p class=MsoNormal>Firefox 87.0 (64bit)<o:p></o:p></p><p class=MsoNormal>Mein Setup sieht folgendermaßen aus. USB-IR -> Raspberry 3B+ -> Synology NAS<o:p></o:p></p><p class=MsoNormal>Das sollte doch eigentlich den Pi entlasten. Auch habe ich bereits die manuelle Aggregation per Hand durchgeführt mit<br><i>php /var/www/volkszaehler.org/bin/aggregate run -m full -l day -l hour -l minute</i><span style='font-size:10.0pt'><o:p></o:p></span></p><p class=MsoNormal>(Quelle: <a href="https://wiki.volkszaehler.org/howto/datenmengen"><span style='color:#0563C1'>https://wiki.volkszaehler.org/howto/datenmengen</span></a>)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Bei der Prüfung der Aggregation habe ich:<o:p></o:p></p><p class=MsoNormal>version "0.3"<o:p></o:p></p><p class=MsoNormal> capabilities <o:p></o:p></p><p class=MsoNormal> database <o:p></o:p></p><p class=MsoNormal> data <o:p></o:p></p><p class=MsoNormal> rows 48231750<o:p></o:p></p><p class=MsoNormal> size 4097835008<o:p></o:p></p><p class=MsoNormal> aggregation <o:p></o:p></p><p class=MsoNormal> rows 5486728<o:p></o:p></p><p class=MsoNormal> size 630407168<o:p></o:p></p><p class=MsoNormal> ratio 8.791<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sollte also klappen. Auch die regelmäßige Aggregation ist im cronjob hinterlegt.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Vielleicht was auffälliges in der vzlogger.conf ?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><i>{<o:p></o:p></i></p><p class=MsoNormal><i> "retry": 0,<o:p></o:p></i></p><p class=MsoNormal><i> "daemon": true,<o:p></o:p></i></p><p class=MsoNormal><i> "verbosity": 0,<o:p></o:p></i></p><p class=MsoNormal><i> "log": "/var/log/vzlogger.log",<o:p></o:p></i></p><p class=MsoNormal><i> "push": [],<o:p></o:p></i></p><p class=MsoNormal><i> "local": {<o:p></o:p></i></p><p class=MsoNormal><i> "enabled": false,<o:p></o:p></i></p><p class=MsoNormal><i> "port": 8080,<o:p></o:p></i></p><p class=MsoNormal><i> "index": false,<o:p></o:p></i></p><p class=MsoNormal><i> "timeout": 0,<o:p></o:p></i></p><p class=MsoNormal><i> "buffer": 0<o:p></o:p></i></p><p class=MsoNormal><i> },<o:p></o:p></i></p><p class=MsoNormal><i> "meters": [<o:p></o:p></i></p><p class=MsoNormal><i> {<o:p></o:p></i></p><p class=MsoNormal><i> "enabled": true,<o:p></o:p></i></p><p class=MsoNormal><i> "allowskip": true,<o:p></o:p></i></p><p class=MsoNormal><i> "interval": -1,<o:p></o:p></i></p><p class=MsoNormal><i> "aggtime": 10,<o:p></o:p></i></p><p class=MsoNormal><i> "aggfixedinterval": true,<o:p></o:p></i></p><p class=MsoNormal><i> "channels": [<o:p></o:p></i></p><p class=MsoNormal><i> {<o:p></o:p></i></p><p class=MsoNormal><i> "api": "volkszaehler",<o:p></o:p></i></p><p class=MsoNormal><i> "uuid": "07689860- XXXXXXXX", //Haus Q3D<o:p></o:p></i></p><p class=MsoNormal><i> "middleware": "http://192.168.178.22:81/middleware.php",<o:p></o:p></i></p><p class=MsoNormal><i> "identifier": "1-0:1.7.0", //Wirkleistung 1-0:1.7.0 0.2868<o:p></o:p></i></p><p class=MsoNormal><i> //"secretKey": "",<o:p></o:p></i></p><p class=MsoNormal><i> //"type": "device",<o:p></o:p></i></p><p class=MsoNormal><i> //"scaler": 1000,<o:p></o:p></i></p><p class=MsoNormal><i> "aggmode": "AVG", //"AVG", // "AVG" Der Mittelwert für Leistung, "MAX" für Zähler, "SUM" für Counter<o:p></o:p></i></p><p class=MsoNormal><i> "duplicates": 0<o:p></o:p></i></p><p class=MsoNormal><i> },<o:p></o:p></i></p><p class=MsoNormal><i> {<o:p></o:p></i></p><p class=MsoNormal><i> "api": "volkszaehler",<o:p></o:p></i></p><p class=MsoNormal><i> "uuid": "c1006760- XXXXXXXX", //Haus Q3D<o:p></o:p></i></p><p class=MsoNormal><i> "middleware": "http://192.168.178.22:81/middleware.php",<o:p></o:p></i></p><p class=MsoNormal><i> "identifier": "1-0:1.8.0", //Gesamtleistung 1-0:1.7.0 0.2868<o:p></o:p></i></p><p class=MsoNormal><i> //"secretKey": "",<o:p></o:p></i></p><p class=MsoNormal><i> //"type": "device",<o:p></o:p></i></p><p class=MsoNormal><i> //"scaler": 1000,<o:p></o:p></i></p><p class=MsoNormal><i> "aggmode": "MAX", //"AVG", // "AVG" Der Mittelwert für Leistung, "MAX" für Zähler, "SUM" für Counter<o:p></o:p></i></p><p class=MsoNormal><i> "duplicates": 0<o:p></o:p></i></p><p class=MsoNormal><i> } <o:p></o:p></i></p><p class=MsoNormal><i> ],<o:p></o:p></i></p><p class=MsoNormal><i> "protocol": "d0",<o:p></o:p></i></p><p class=MsoNormal><i> "device": "/dev/usb-ir-lesekopf0",<o:p></o:p></i></p><p class=MsoNormal><i> "dump_file": "",<o:p></o:p></i></p><p class=MsoNormal><i> //"pullseq": "2f3f210d0a",<o:p></o:p></i></p><p class=MsoNormal><i> //"ackseq": "auto",<o:p></o:p></i></p><p class=MsoNormal><i> "baudrate": 9600,<o:p></o:p></i></p><p class=MsoNormal><i> //"baudrate_read": 9600,<o:p></o:p></i></p><p class=MsoNormal><i> "parity": "7e1"<o:p></o:p></i></p><p class=MsoNormal><i> //"wait_sync": "off",<o:p></o:p></i></p><p class=MsoNormal><i> //"read_timeout": 10,<o:p></o:p></i></p><p class=MsoNormal><i> //"baudrate_change_delay": 0<o:p></o:p></i></p><p class=MsoNormal><i> },<o:p></o:p></i></p><p class=MsoNormal><i> {<o:p></o:p></i></p><p class=MsoNormal><i> "enabled": true,<o:p></o:p></i></p><p class=MsoNormal><i> "allowskip": true,<o:p></o:p></i></p><p class=MsoNormal><i> "interval": -1,<o:p></o:p></i></p><p class=MsoNormal><i> "aggtime": -1, // >interval<o:p></o:p></i></p><p class=MsoNormal><i> "aggfixedinterval": true,<o:p></o:p></i></p><p class=MsoNormal><i> "channels": [<o:p></o:p></i></p><p class=MsoNormal><i> {<o:p></o:p></i></p><p class=MsoNormal><i> "api": "volkszaehler",<o:p></o:p></i></p><p class=MsoNormal><i> "uuid": "eb3fa3d0- XXXXXXXX", //WP Elster AS1440 0.1833<o:p></o:p></i></p><p class=MsoNormal><i> "middleware": "http://192.168.178.22:81/middleware.php",<o:p></o:p></i></p><p class=MsoNormal><i> "identifier": "1-1:1.7.0", //Leistung<o:p></o:p></i></p><p class=MsoNormal><i> "aggmode": "AVG", // "AVG" Der Mittelwert für Leistung, "MAX" für Zähler, "SUM" für Counter<o:p></o:p></i></p><p class=MsoNormal><i> "secretKey": "",<o:p></o:p></i></p><p class=MsoNormal><i> //"type": "device",<o:p></o:p></i></p><p class=MsoNormal><i> //"scaler": 0.001,<o:p></o:p></i></p><p class=MsoNormal><i> "duplicates": 0<o:p></o:p></i></p><p class=MsoNormal><i> },<o:p></o:p></i></p><p class=MsoNormal><i> {<o:p></o:p></i></p><p class=MsoNormal><i> "api": "volkszaehler",<o:p></o:p></i></p><p class=MsoNormal><i> "uuid": "c105ad10-XXXXXXXX", //WP Elster AS1440 0.1833<o:p></o:p></i></p><p class=MsoNormal><i> "middleware": "http://192.168.178.22:81/middleware.php",<o:p></o:p></i></p><p class=MsoNormal><i> "identifier": "1-1:1.8.0", //Gesamt<o:p></o:p></i></p><p class=MsoNormal><i> "aggmode": "MAX", // "AVG" Der Mittelwert für Leistung, "MAX" für Zähler, "SUM" für Counter<o:p></o:p></i></p><p class=MsoNormal><i> "secretKey": "",<o:p></o:p></i></p><p class=MsoNormal><i> //"type": "device",<o:p></o:p></i></p><p class=MsoNormal><i> //"scaler": 1,<o:p></o:p></i></p><p class=MsoNormal><i> "duplicates": 0<o:p></o:p></i></p><p class=MsoNormal><i> },<o:p></o:p></i></p><p class=MsoNormal><i> {<o:p></o:p></i></p><p class=MsoNormal><i> "api": "volkszaehler",<o:p></o:p></i></p><p class=MsoNormal><i> "uuid": "563d4950- XXXXXXXX", //WP Elster AS1440 0.1833<o:p></o:p></i></p><p class=MsoNormal><i> "middleware": "http://192.168.178.22:81/middleware.php",<o:p></o:p></i></p><p class=MsoNormal><i> "identifier": "1-1:1.8.1", //HT<o:p></o:p></i></p><p class=MsoNormal><i> "aggmode": "AVG", // "AVG" Der Mittelwert für Leistung, "MAX" für Zähler, "SUM" für Counter<o:p></o:p></i></p><p class=MsoNormal><i> "secretKey": "",<o:p></o:p></i></p><p class=MsoNormal><i> //"type": "device",<o:p></o:p></i></p><p class=MsoNormal><i> //"scaler": 1,<o:p></o:p></i></p><p class=MsoNormal><i> "duplicates": 0<o:p></o:p></i></p><p class=MsoNormal><i> },<o:p></o:p></i></p><p class=MsoNormal><i> {<o:p></o:p></i></p><p class=MsoNormal><i> "api": "volkszaehler",<o:p></o:p></i></p><p class=MsoNormal><i> "uuid": "953700e0- XXXXXXXX", //WP Elster AS1440 0.1833<o:p></o:p></i></p><p class=MsoNormal><i> "middleware": "http://192.168.178.22:81/middleware.php",<o:p></o:p></i></p><p class=MsoNormal><i> "identifier": "1-1:1.8.2", //NT<o:p></o:p></i></p><p class=MsoNormal><i> "aggmode": "AVG", // "AVG" Der Mittelwert für Leistung, "MAX" für Zähler, "SUM" für Counter<o:p></o:p></i></p><p class=MsoNormal><i> "secretKey": "",<o:p></o:p></i></p><p class=MsoNormal><i> //"type": "device",<o:p></o:p></i></p><p class=MsoNormal><i> //"scaler": 1,<o:p></o:p></i></p><p class=MsoNormal><i> "duplicates": 0<o:p></o:p></i></p><p class=MsoNormal><i> } <o:p></o:p></i></p><p class=MsoNormal><i> ],<o:p></o:p></i></p><p class=MsoNormal><i> "protocol": "d0",<o:p></o:p></i></p><p class=MsoNormal><i> "device": "/dev/usb-ir-lesekopf1", //<o:p></o:p></i></p><p class=MsoNormal><i> "dump_file": "",<o:p></o:p></i></p><p class=MsoNormal><i> "pullseq": "2F3F210D0A",<o:p></o:p></i></p><p class=MsoNormal><i> "ackseq": "auto",<o:p></o:p></i></p><p class=MsoNormal><i> "baudrate": 300,<o:p></o:p></i></p><p class=MsoNormal><i> "baudrate_read": 9600,<o:p></o:p></i></p><p class=MsoNormal><i> "parity": "7e1",<o:p></o:p></i></p><p class=MsoNormal><i> //"wait_sync": "off",<o:p></o:p></i></p><p class=MsoNormal><i> "baudrate_change_delay": 500,<o:p></o:p></i></p><p class=MsoNormal><i> "read_timeout": 100<o:p></o:p></i></p><p class=MsoNormal><i> }<o:p></o:p></i></p><p class=MsoNormal><i> ]<o:p></o:p></i></p><p class=MsoNormal><i>}<o:p></o:p></i></p><p class=MsoNormal><i><o:p> </o:p></i></p><p class=MsoNormal>In phpMyAdmin habe ich noch folgende Performance Probleme entdeckt. Da traue ich mich aber nicht ran. Muss da nicht in der Logik was geändert werden?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div><table class=MsoNormalTable border=0 cellpadding=0><thead><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal align=center style='text-align:center'><b>Problem<o:p></o:p></b></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal align=center style='text-align:center'><b>Empfehlung<o:p></o:p></b></p></td></tr></thead><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>{long_query_time} ist auf 10 Sekunden oder mehr gesetzt, somit werden nur langsame Abfragen geloggt, die länger als 10 Sekunden laufen.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Es wird empfohlen, long_query_time auf einen niedrigeren Wert zu setzen, abhängig von Ihrer Umgebung. Gewöhnlich wird ein Wert von 1 bis 5 Sekunden vorgeschlagen. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Die Überwachung langsamer Anfragen ist deaktiviert.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Loggen von langsamen Abfragen einschalten, indem slow_query_log auf 'ON' gesetzt wird. Das hilft beim Erkennen von grauenhaft langsamen Abfragen. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Version ist aus Quellen übersetzt, keine offizielle MySQL-Binärversion.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Wenn Sie den Quellcode nicht kompiliert haben, kann es sein, dass Sie ein Paket verwenden, welches durch eine Distribution verändert wurde. Die MySQL-Dokumentation ist nur für offizielle MySQL Binaries gültig, nicht für Paket-Distributionen (z.B. RedHat, Debian/Ubuntu, etc). <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Zu viele Sortierungen verursachen temporäre Tabellen.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Ziehen Sie in Betracht, sort_buffer_size und/oder record_rnd_buffer zu erhöhen, je nach verfügbarem Speicher Ihres Systems. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Es werden viele Zeilen sortiert.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Auch wenn ein hoher Anteil an Zeilensortierungen nicht falsch ist, sollten Sie darauf achten, dass die Abfragen, die viele Sortierungen verwenden, indizierte Spalten in der ORDER-BY-Klausel verwenden, da dies zu viel schnellerem Sortieren führt. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Es werden zu viele Joins ohne die Benutzung von Indizes durchgeführt.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Dies bedeutet, dass Joins vollständige Tabellenscans durchführen. Indizes für die Spalten zu verwenden, die in den Join-Bedingungen eingesetzt werden, wird die Joins erheblich beschleunigen. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Die Lese-Rate fester Positionen ist hoch.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Dies deutet darauf hin, dass viele Abfragen Sortieren und/oder vollständige Tabellen-Scan benötigen, einschließlich Join-Abfragen die keine Indizes verwenden. Fügen Sie Indizes hinzu wo zutreffend. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Lese-Rate nächste Tabellenzeile ist hoch.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Dies deutet darauf hin, dass viele Abfragen Full Table Scans durchführen. Fügen Sie Indizes hinzu wo zutreffend. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Viele temporäre Tabellen werden auf die Festplatte geschrieben, anstelle im Speicher gehalten zu werden.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Erhöhen von max_heap_table_size und tmp_table_size könnten helfen. Jedoch werden einige temporären Tabellen immer unabhängig vom Wert dieser Variablen auf den Datenträger geschrieben. Um diese zu verhindern müssen Sie Ihre Abfragen so umschreiben das es nicht zu diesen Bedingungen kommt (Innerhalb einer temporären Tabelle: Vorhandensein eines BLOB- oder TEXT-Spalte oder eine Spalte größer als 512 Bytes) wie am Anfang von Artikel der Pythian Group erwähnt wird <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>MyISAM Schlüssel-Cache (Indize Cache) % benutz ist niedrig.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Sie müssen möglicherweise Ihren key_buffer_size verkleinern, überprüfen Sie Ihre Tabellen um zu sehen ob Indizes entfernt wurden oder Überprüfen Sie Abfragen und Erwartungen um zu sehen welche Indizes verwendet werden. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Der % von Indizes, die den MyISAM Schlüsselpuffer verwenden ist gering.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Sie müssen möglicherweise Key_buffer_size erhöhen. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Hohe Anzahl an Tabellen-Öffnungen.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Öffnen von Tabellen erfordert Festplatten I/O, welches langsam ist. Erhöhung von Table_open_cache könnte dies vermeiden. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Zu viele Clienten werden abgebrochen.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Clienten werden in der Regel abgebrochen, wenn sie ihre Verbindung zu MySQL nicht richtig schließen. Dies kann aufgrund von Netzwerkproblemen oder Quellcode der Datenbank-Handler nicht ordnungsgemäß schließen passieren. Überprüfen Sie Ihre Netzwerk und Quellcode. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Zu viele Clienten werden abgebrochen.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Clienten werden in der Regel abgebrochen, wenn sie ihre Verbindung zu MySQL nicht richtig schließen. Dies kann aufgrund von Netzwerkproblemen oder Quellcode der Datenbank-Handler nicht ordnungsgemäß schließen passieren. Überprüfen Sie Ihre Netzwerk und Quellcode. <o:p></o:p></p></td></tr><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Der Abfragen-Zwischenspeicher ist nicht aktiviert.<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Der Abfrage-Zwischenspeicher verbessert die Leistung, wenn er korrekt konfiguriert wurde. Aktivieren Sie ihn indem Sie query_cache_size auf ein zweistelligen MiB-Wert und query_cache_type auf 'ON' setzen. Beachten Sie: Ignorieren Sie diese Empfehlung, wenn Sie memcached benutzen. <o:p></o:p></p></td></tr></table></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Gruß René<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>