<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hallo Andreas,<div><br></div><div>zunächst einmal vielen Dank, dass Du Dich so aktiv um die Weiterentwicklung von <a href="http://volkszaehler.org">volkszaehler.org</a> bemühst.</div><div>Bei mir loggen seit drei Jahren vier S0-Impulszaehler in die Datenbank, die zur Zeit ~22,8 Mio Datensätze umfasst und ca. 1,8GB groß ist. Bei mir läuft die Middleware und die DB auf einem ‚richtigen’ Server (Xeon E3v2 1230, 8GB Ram, ZFS-RAID-System). Trotzdem dauert die Anzeige eines Monats im Frontend ca. 60s (handgestoppt), ein Jahr dann nicht mehr so viel länger: 83s.</div><div>Ich habe Deine Änderungen jetzt auch mal auf meinem System ausprobiert und gemäß Deinen u.a. Anweisungen umgesetzt. Zunächst einmal super Arbeit mit dieser Erweiterung: abwärtskompatibel, gut dokumentiert, sehr gute Tools (aggregate.php)!</div><div>Die Anzeige eines Monats dauert jetzt:  0,6s, ein Jahr wird in der gleichen Zeit dargestellt - Wow!</div><div>Ich hatte noch die Sorge, dass mit der Aggregation auch die Genauigkeit des ermittelten Verbrauchs leidet, dies ist aber nur in kleinem Umfang zu beobachten. Bei einer Monatsübersicht weichen die aggregierten Zahlen von der Summe der Einzelwerte im Schnitt um 0,3kWh ab.</div><div><br></div><div>Nochmals: Super Job und vielen Dank!</div><div><br></div><div>Greetinx,</div><div>Udo</div><div><br></div><div><br><div><div>Am 15.12.2013 um 12:10 schrieb Andreas Goetz <<a href="mailto:cpuidle@gmail.com">cpuidle@gmail.com</a>>:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Hallo Heike & Sollner11,<br><br>erstmal vielen Dank dass Ihr Euch als Tester zur Verfügung stellt! Vielleicht sollte Heiko es zuerst versuchen ;)<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="word-wrap:break-word"><div class="h5"><blockquote type="cite"><div dir="ltr">Hallo Zusammen, <br></div></blockquote></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="word-wrap:break-word"><div class="h5"><blockquote type="cite"><div dir="ltr"><div>...<br></div>Daher meine Frage und Bitte: wer das Thema spannend findet und die Entwicklungen testen möchte sollte sich hier melden.<br>

Die Entwicklungen stehen unter <a href="https://github.com/andig/volkszaehler.org/tree/dev" target="_blank">https://github.com/andig/volkszaehler.org/tree/dev</a> bereit. Wenn Interesse besteht gebe ich einen kurzen Einführungskurs.<br>
</div></blockquote></div></div></blockquote><div>Also:<br><br>Der Performanceboost beruht auf 3 Bausteinen: 1) einer neuen "aggregate" Tabelle welche Zusammenfassungen der Daten enthält 2) Anpassungen der MW die einige SQL-Abfragen durch Nutzung der neuen Tabelle optimieren und 3) einem Frontend das Anfragen so umformuliert dass die MW sie durch Nutzung der aggregate Tabelle nochmals schneller ausführen kann.<br>
<br></div><div>1. Die bestehend Datenbank wird nicht angepasst, es geht also nichts kaputt!<br></div><div>2. Alle Logger etc könne weiter laufen wie gehabt, keine Einschränkungen<br>3. Ihr könnt die bestehende Installation durch den dev Tree überschreiben oder selektiv nur die Middleware reinkopieren. Macht keinen großen Unterschied, dev ist auf dem Stand von master.<br>
</div><div><br>4. Allerdings müssen die Abhängigkeiten installiert werden. Dev baut auf <a href="https://github.com/volkszaehler/volkszaehler.org/pull/58">https://github.com/volkszaehler/volkszaehler.org/pull/58</a> auf, d.h. es wird Composer benötigt. Diesen Schritt sollte man einmal üben bevor man die Installation macht damit nicht plötzlich das System steht und die Logger ins Leere laufen:<br>
<br>4a. Get composer (<a href="http://getcomposer.org/">http://getcomposer.org/</a>)<br>4b. Run "composer install"<br></div></div>4c. danach sollte die neue (oder alte) MW wieder erreichbar sein: <a href="http://.../middleware.php/capabilities.json">http://.../middleware.php/capabilities.json</a> zeigt obs geklappt hat.<br>
<br></div><div class="gmail_extra">5. Jetzt muss die neue Tabelle eingerichtet werden:<br></div><div class="gmail_extra">5a. $config['aggregation']=true; in der etc/volkszaehler.conf.php eintragen<br></div><div class="gmail_extra">
5b. Tabelle anlegen 'php misc/tools/aggregate.php create'<br></div><div class="gmail_extra">5c. Tabelle befüllen 'php misc/tools/aggregate.php -m full -l day aggregate' und 'php misc/tools/aggregate.php -m full -l hour aggregate' sollten dafür genügen. Auf einem kleinen Raspi kann dieser Schritt eine Weile dauern. Danach könnt Ihr testen-> das Frontend sollte jetzt "rennen"!<br>
<br></div><div class="gmail_extra">6. Die aggregate Tabelle dauerhaft auf einem 
aktuellen Stand halten. Dafür hat das Skript einen "Delta" Modus der 
deutlich performanter ist. Dazu richtet man unter Linux mittels 'crontab -e' einen Cron Job ein. Die Tägliche ('day') Aggregation sollte nach Mitternacht laufen, die stündliche ('hour') immer nach der vollen Stunde:<br>
<br>0 3 * * * /usr/bin/php <a href="http://volkszaehler.org/misc/tools/aggregate.php">volkszaehler.org/misc/tools/aggregate.php</a> -m delta -l day run<br>15 * * * * /usr/bin/php <a href="http://volkszaehler.org/misc/tools/aggregate.php">volkszaehler.org/misc/tools/aggregate.php</a> -m delta -l hour run<br>
<br></div><div class="gmail_extra">Das Ganze ist übrigens so implementiert, dass die MW auch dann funktioniert wenn in der agrgegate Tabelle keine Daten stehen, aber dann halt wieder so langsam wie vorher. Wenn ihr das testen wollt die Tabelle einfach mit 'php misc/tools/aggregate.php clear' löschen.<br>
<br></div><div class="gmail_extra">Jetzt bin ich auf die ersten Ergebnisse gespannt, wie gesagt bei Schritt 4 bitt aufpassen bzw. in einer separaten Installationen zunächst testen!!!!<br><br>vg<br>Andreas<br></div></div>
</blockquote></div><br></div></body></html>