PDA

View Full Version : 5.02f Webserver-Probleme



Werner
09.08.2010, 23:03
Hallo,
der Webserver schläft in der 5.02g und 5.02f nach einiger Zeit ein. Nach einem Profilux-Neustart ist für eine kurze Zeit alles ok, dann wird über über Tage immer langsamer bis gar nichts mehr geht und man kann wieder Stecker ziehen. Wie ich im Forum gelesen habe, haben auch andere das Problem. Wollte das auch nur noch mal bestätigen.

Beim Mailversand über den Profilux 3 kann ich mir nur ein freundliches "Hallo" zuschicken. Meßwerte lassen sich da leider nicht einfügen. Habs jedenfalls nicht hinbekommen. Oder gibt es da einen Trick?

Monat 10 nach Einführung Profilux 3 und ich kann für mich wichtige Funktionen, mit denen das Produkt beworben worden ist, immer noch nicht nutzen. Aber das hatten wir ja schon und möchte ich jetzt nicht weiter ausführen.

Für mich war eben wichtig, der selbstständige Mailversand und einen Webserver der zum einen stabil funktioniert und zum anderen etwas mehr kann als nur ein paar Meßwerte anzuzeigen. Für alles andere hätte bei mir auch mein alter Profilux Plus II gereicht.

Gruss Werner

Mathias-Steffen
10.08.2010, 14:13
Token ( Messwerte, etc.) werden in Mails noch nicht unterstützt. Wir arbeiten aber daran, diese Funktion zur Verfügung zu stellen.

Bitte haben Sie Verständnis, daß uns noch kein Termin dazu vorliegt.

Nutzen Sie den Webserver von vielen Punkten aus gleichzeitig (z.B. externe Dienstleister, Zugriff von Handy, PC, etc.)

Bitte beachten Sie, daß die Anzahl gleichzeitiger Verbindungen begrenzt ist.

Auch automatisierte Dienste, wie z.B. MarineMad generieren solche Anfragen, gleichzeitig zu Ihrer persönlichen Nutzung.

Wirus
10.08.2010, 14:52
Nutzen Sie den Webserver von vielen Punkten aus gleichzeitig (z.B. externe Dienstleister, Zugriff von Handy, PC, etc.)

Bitte beachten Sie, daß die Anzahl gleichzeitiger Verbindungen begrenzt ist.

Auch automatisierte Dienste, wie z.B. MarineMad generieren solche Anfragen, gleichzeitig zu Ihrer persönlichen Nutzung.

Konkurrierende Zugriffe generieren natürlich u.U. Wartezeiten, das ist klar. Das erklärt aber nicht, warum sich die Zugriffszeiten nach einiger Zeit systematisch bis zur Unbenutzbarkeit erhöhen.

Es fehlt immer noch ein offizielles Statement, dass der Fehler überhaupt als solcher registriert wurde. Wenn er nicht nachvollziehbar ist - einfach fragen, gerne auch per PM

Mathias-Steffen
10.08.2010, 15:05
Daß sich die Zugriffszeiten erhöhen, konnten wir bislang noch nicht nachstellen, ist bei Ihrem Testgerät sichergestellt, daß während der Testphase keine Zugriffe von anderen Diensten (MarineMad und Co.) erfolgen?

Wird die Anzahl der gleichzeitigen Verbindungen immer weiter erhöht, kommt irgendwann der Punkt, an dem der PL nicht mehr antwortet. Dies haben wir bereits nachgestellt. Es handelt sich dabei aber um ein vollkommen normales Verhalten eines kleinen Webservers.

Für detailierte Fehlerbeschreibungen haben wir allerdings immer ein offenes Ohr, nur so können wir den Fehler hier unter Laborbedingen rekonstruieren.

BoyScout
10.08.2010, 15:37
Ich hab hier das gleiche Phänomen, der Zugriff erfolgt auf die RSS-Seite von 2 Punkten (IP-Symcon & externer Webserver).
Der Intervall: Alle 5 Minuten eine Anfrage.
Response-Time: mittlerweile über 30 Sekunden

das Ganze ist bei mir allerdings erst seit dem letzten Firmware-Upgrade aufgefallen *grummel*. Da es sich immer um einen HTTP Request handelt, kann eigentlich die Verbindung nicht offen gehalten werden - nur für den Zeitraum bis entweder der Timeout vom Client initiiert wird, oder der Profilux endlich die Seite ausliefert.

Gruß,
Markus

Wirus
10.08.2010, 15:41
... ist bei Ihrem Testgerät sichergestellt, daß während der Testphase keine Zugriffe von anderen Diensten (MarineMad und Co.) erfolgen?

Das Szenario ist ein wenig anders:

Equipment:
- Profilux 3, geflasht mit 5.02g, nagelneu, mit fixer IP,
- Fritzbox 7170 an DSL, stabile 16 Megabit, mit Port-Weiterleitung auf Port 80
- DynDns-Adresse mit Weiteleitung auf Profilux

Software
- Datei auf dem Profilux, die über Token die Daten zur verfügung stellt, diese sehen so aus:

<?php
// date & time
$actual_date = "10.08.10";
$actual_time = "16:27:51";
$alarm_state = "kein Alarm - alles OK";
// collect data of sensors
$sensor_description[000] = "pH-Wert 1";
$sensor_value[000] = " 7.36pH";
$sensor_short_desc[000] = "pH ";
$sensor_description[001] = "Temperatur 1";
$sensor_value[001] = " 26.6C";
$sensor_short_desc[001] = "Temp ";
$sensor_description[002] = "Leitwert(S) 1";
$sensor_value[002] = " ---";
$sensor_short_desc[002] = "Le.S ";
$sensor_description[003] = "Redox 1";
$sensor_value[003] = " 435mV";
$sensor_short_desc[003] = "Redx ";
// collect data of illumination
$light_description[000] = "Beleucht. 1";
$light_value[000] = " 78%";
$light_description[001] = "Beleucht. 2";
$light_value[001] = " 78%";
// collect data of switch output
$switch_description[000] = "S 1";
$switch_state[000] = "Ein";
$switch_description[001] = "S 2";
$switch_state[001] = "Aus";
$switch_description[002] = "S 3";
$switch_state[002] = "Aus";
$switch_description[003] = "S 4";
$switch_state[003] = "Aus";
$switch_description[004] = "S 5";
$switch_state[004] = "Aus";
?>
- Webserver bei einem Hoster, der MySQL und PHP unterstützt
- Cronjob bei Cronjob.de, der alle 5 min ein Schript auf dem Webserver abruft.
Dieses Script bindet die Daten ein und schreibt sie in eine MySQL-Datenbank

Das lief auch einige Zeit gut (2-3 Tage), danach waren die Zugriffszeiten so groß, dass ein der das PHP-Script auf dem Server mit Timeout abbrach.

Auch ein Reboot (stomlos machen des PL3) brachte keine Verbesserung. Erst das Hardware-Update auf eX brachte Besserung - allerdings nur für zwei Tage.

Signifikant ist dabei, dass der Zugriff mitten im Tag abbrach. Es war niemand zuhause, niemand hat diese Adresse und niemand ausser dem Script greift darauf zu.

Ein Downgrade, und Re-Upgrade auf eX brachte den Erfolg, dass es seit vier Tagen ohne größere Probleme geht.

Ich möchte hier die Adresse nicht posten, da alles Gesagte nur bei Zugriff ohne Passwort geht, mit Passwort sind die Zugriffszeiten so hoch, dass ebenfalls ein Timeout entsteht.

Mathias-Steffen
10.08.2010, 18:34
Falls noch einmal dieselben Probleme auftreten, bitte zunächst einmal die Zugriffszeiten ohne automatisierte Abrufe überprüfen ( über einen längeren Zeitraum). Sollten diese dann auch immer länger werden, kommen Sie bitte noch einmal auf uns zu. (Am besten ein Ticket im Kundencenter aufmachen - Abteilung Entwicklung)

Für uns ist es im Vorfeld immer sehr schwer, solche umfangreichen Spezial-Scenarios, wie in Ihrem Falle nachzustellen, die ja sehr vielfältig sein können.

AQUA-IT
10.08.2010, 20:14
Der Webserver wird von Zugriff zu Zugriff langsamer. Marinemad pollt nur alle 15 Minuten den Profilux ab, das sollte kein Problem darstellen, zumal mit der 5.01 alles in Ordnung ist. Ich habe das bereits auf 3 Geräten die ich hier in Testumgebungen nachstellen können bei den Betas 5.02g und 5.02f. Je intensiver und häufiger man den Webserver fordert desto schneller tritt das Problem auf.

Die Zugriffzeiten nach Neustart liegen nach Passworteingabe bei 0,73 Sekunden. Nach einem Tag wenn man den Webserver regelmäßig nutzt sind es schon 20 Sekunden und mehr und die Seiten werden unvollständig geladen. Bis er dann irgendwann gar keine Antworten mehr liefert. Profilux-Neustart und alles ist wieder in Ordnung bis das Spiel wieder von vorne losgeht.

Vielleicht werden die Sockets nicht richtig geschlossen in gewissen Situationen seitens des PL oder ähnliches. Es liegt auf alle Fälle im Schritt zwischen der letzten Firmware 5.01 und 5.02g.

Werner
10.08.2010, 21:14
Ich verstehe das nicht das GHL versucht hier ein Webserver-Problem "schönzureden". Ist es denn so ein Problem mal zu sagen das man ein Problem in der aktuellen BETA hat? Die meisten sagen doch hier das es mit der 5.01 noch funktioniert hat bzw. downgraden und auf einmal geht wieder alles.

Auch die ständigen Bemerkungen das Marinemad ein Fremdanbieter ist. Aber Ihr schmückt Euch doch selber mit Bildern auf der Webseite und Werbung das Ipone-Zugriff möglich ist. Wenn der Profilux3-Webserver solche Antwortzeiten nach einigen Tagen hat, werden auch externe Dienste wie Marinemad mit Ihren Iphone-App so Ihre Probleme mit der Darstellung und Verarbeitung der Daten haben. Können Ihre Daten nicht mehr oder unvollständig abrufen.
Dieses Problem hatte ich nämlich als die Marinemad-Seite noch ging mit der 5.02, wohlgemerkt mit der 5.01 war alles in Ordnung. Momentan ist die Seite seit schon 4 Tagen tot. Das App habe ich gerade mal zwei Wochen nutzen können. Keine Mitteilung des Fremdanbieters im Forum, keine Antwort auf E-Mails von denen.

Aber ich weiss.. Fremdanbieter. Habt Ihr nichts mit zu tun! Und die 5.02 ist nur eine Beta.. kann man ja auch wieder runterschmeissen und notgedrungen auf die funktionierenden Erweiterungen wie NTP verzichten.

Wirus
10.08.2010, 21:54
Falls noch einmal dieselben Probleme auftreten, bitte zunächst einmal die Zugriffszeiten ohne automatisierte Abrufe überprüfen ( über einen längeren Zeitraum).

Und das soll was bringen? Ein Http-Request ist ein Http-Request, ob automatisch oder manuell initiiert spielt keine Rolle. Das kann der Server nicht unterscheiden. Soll hier Zeit geschunden werden?


Sollten diese dann auch immer länger werden, kommen Sie bitte noch einmal auf uns zu. (Am besten ein Ticket im Kundencenter aufmachen - Abteilung Entwicklung)

Da ich zudem momentan keine Probleme habe, werde ich kein Ticket eröffnen.

Allerdings lese ich Ihren Hinweis als Aufforderung an alle, die Probleme haben, ein Ticket zu eröffnen.

Ich logge inzwischen die Antwortzeiten mit. Wenn wieder Probleme auftreten kann ich das dann genau belegen und werde das Ticketsystem nutzen


Für uns ist es im Vorfeld immer sehr schwer, solche umfangreichen Spezial-Scenarios, wie in Ihrem Falle nachzustellen, die ja sehr vielfältig sein können.

Ich würde dauerhafte Loggen von Daten bei einem webfähigen Gerät nicht als Spezial-Scenario bezeichnen sondern als normalen Gebrauch.
Da der PL3 nicht pushfähig ist (mein dementsprechendes Post in der Rubrik Kundenwünsche wurde nicht beantwortet) und auch keine anderen Möglichkeit der Langzeit-Datenaufzeichnung besteht, ist diese Lösung sehr nahe liegend.

Mathias-Steffen
11.08.2010, 07:11
Zur Klärung: Generell nehmen wir uns jedem Problem an, das uns bekannt wird. Im Hintergrund laufen ständig Tests und Qualitätskontrollen zur Sicherung unserer Produktqualität. Da manche Fehler aber nur in speziellen Anwendungsfällen oder bei sehr langer Gerätelaufzeit bzw. in Verbindung mit speziellen Hardwarekonfigurationen auftreten, freuen wir uns über Rückmeldungen von Kundenseite, die uns helfen, diese kleinen Schwächen auch noch auszuräumen.

Das Pollen per PHP von einem Webserver aus ist sicherlich eine ganz normale Anwendung, die aber dennoch nur von einem Bruchteil der Kunden praktiziert werden dürfte und stark von der jeweiligen Implementierung des PHP Scripts abhängt.

@Wirus: Ihre gesammelten Informationen helfen uns, diesen und ähnliche konkrete Fälle nachzustellen und ggf. Probleme zu beseitigen. Sie müssen uns nichts belegen, aber Sie unterstützen dadurch unsere Arbeit und die schnelle Korrektur des vermuteten Fehlers. In solchen speziellen(!) Fällen, wenn das Supportforum und seine anderen User nur bedingt weiterhelfen können, empfiehlt sich das Eröffnen eines Supporttickets und das Anhängen von Screenshots, Scripts, etc. an dieses.

Zu den Verbindungen: Nicht die Länge einer Verbindung ist das Problem, sondern die Anzahl gleichzeitiger Verbindungen, die einem vielleicht gar nicht bewußt ist, weil diese automatisiert durch Scripts erfolgen.

Was natürlich nicht ausschließt, daß in einer BETA-Version der Firmware noch der eine oder andere kleine Bug ist.

BoyScout
11.08.2010, 08:35
Okay, dann werden wir mal etwas konkreter.
Hier mein Script (ja, es ist etwas gepfuscht - aber es tut was es soll & mir fehlen noch die nötigen Kenntnisse zur Interpretation von XML-Files. Verbesserungsvorschläge zum Script gerne per PN an mich *g*):

<?php
/**
* Profilux Comunication with GHL XML-File
* version: 1.01
*
* NOTES:
* - Fist release of the script.
*
* Written by Markus Kromberg
* http://www.kromberg.tk
*
*/

function get_string_between($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}

function getcontent($server, $port, $file)
{
$cont = "";
$ip = gethostbyname($server);
$fp = fsockopen($ip, $port);
if (!$fp)
{
return "Unknown";
}
else
{
$com = "GET $file HTTP/1.1\r\nAccept: */*\r\nAccept-Language: de-ch\r\nAccept-Encoding: gzip, deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\nHost: $server:$port\r\nConnection: Keep-Alive\r\n\r\n";
fputs($fp, $com);
while (!feof($fp))
{
$cont .= fread($fp, 500);
}
fclose($fp);
$cont = substr($cont, strpos($cont, "\r\n\r\n") + 4);
return $cont;
}
}

/* HTML-File vom Profilux abholen */
$var_site = getcontent("W.X.Y.Z", "80", "/Status.rss");

/* Convert 2 UTF-8 */
$var_site = utf8_encode($var_site);

/* XML in Array umwandeln */
$xml = simplexml_load_string($var_site);

/* Variablen parsen */
$var_pl_zeit = get_string_between($var_site, "<time>", "</time>");
$var_pl_date = get_string_between($var_site, "<date>", "</date>");
$var_pl_model = get_string_between($xml->entry[0]->content, "Modell: ", ", S/N:");
$var_pl_fwver = get_string_between($xml->entry[0]->content, "FW-Version ", " vom");
$var_pl_fwdate = get_string_between($var_site, "<firmware_date>", "</firmware_date>");

$var_pl_1to10_01 = intval(get_string_between($var_site, '<content>Beleucht. 1', "</content>"));
$var_pl_1to10_02 = intval(get_string_between($var_site, '<content>Beleucht. 2', "</content>"));
$var_pl_1to10_03 = intval(get_string_between($var_site, '<content>Beleucht. 3', "</content>"));
$var_pl_1to10_04 = intval(get_string_between($var_site, '<content>Beleucht. 4', "</content>"));
$var_pl_1to10_05 = intval(get_string_between($var_site, '<content>Beleucht. 5', "</content>"));
$var_pl_1to10_06 = intval(get_string_between($var_site, '<content>Beleucht. 6', "</content>"));

$var_pl_power_01 = $xml->entry[9]->content;
$var_pl_power_02 = $xml->entry[10]->content;
// $var_pl_power_03 = $xml->entry[11]->content;
$var_pl_power_04 = $xml->entry[11]->content;
// $var_pl_power_05 = get_string_between($var_site, '<kanal id="S 5">', "</kanal>");
$var_pl_power_06 = $xml->entry[12]->content;
$var_pl_power_07 = $xml->entry[13]->content;

/* PH-Wert */
$var_pl_sens_01_capt = $xml->entry[1]->summary;
$var_pl_sens_01_val = get_string_between($xml->entry[1]->content, 'pH 1', "pH ");
$var_pl_sens_01_val = floatval(trim(str_replace(",", ".", $var_pl_sens_01_val)));

/* Temperatur */
$var_pl_sens_02_capt = $xml->entry[2]->summary;
$var_pl_sens_02_val = get_string_between($xml->entry[2]->content, 'Temp 1', "C ");
$var_pl_sens_02_val = floatval(trim(str_replace(",", ".", $var_pl_sens_02_val)));

/* Variablen abspeichern */
if ($var_pl_power_01 == "Ein") { SetValue(24180 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 1]*/,TRUE); } else { SetValue(24180 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 1]*/,FALSE); }
if ($var_pl_power_02 == "Ein") { SetValue(43620 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 2]*/,TRUE); } else { SetValue(43620 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 2]*/,FALSE); }
// if ($var_pl_power_03 == "Ein") { SetValue(36035 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 3]*/,TRUE); } else { SetValue(36035 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 3]*/,FALSE); }
if ($var_pl_power_04 == "Ein") { SetValue(34376 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 4]*/,TRUE); } else { SetValue(34376 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 4]*/,FALSE); }
// if ($var_pl_power_05 == "Ein") { SetValue(56665 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 5]*/,TRUE); } else { SetValue(56665 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 5]*/,FALSE); }
if ($var_pl_power_06 == "Ein") { SetValue(28024 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 6]*/,TRUE); } else { SetValue(28024 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 6]*/,FALSE); }

/* Plausibilitäts-Check & speichern*/
if ($var_pl_sens_01_val > 9.5) $var_pl_sens_01_val = "_error_";
if ($var_pl_sens_01_val < 5.5) $var_pl_sens_01_val = "_error_";
if ($var_pl_sens_01_val != "_error") SetValue(39430 /*[Wohnung\Wohnzimmer\Aquarium\PH]*/,$var_pl_sens_01_val);

if ($var_pl_sens_02_val > 35) $var_pl_sens_02_val = "_error_";
if ($var_pl_sens_02_val < 15) $var_pl_sens_02_val = "_error_";
if ($var_pl_sens_02_val != "_error") SetValue(28818 /*[Wohnung\Wohnzimmer\Aquarium\Wassertemperatur]*/,$var_pl_sens_02_val);

/* Beleuchtung zuordnen & speichern */
switch (date("N"))
{
case 1:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 2:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 3:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = 0;
$var_bel_moon = $var_pl_1to10_03;
break;
case 4:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 5:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 6:
$var_bel_54wd = $var_pl_1to10_04;
$var_bel_36wn = $var_pl_1to10_05;
$var_bel_moon = $var_pl_1to10_06;
break;
case 7:
$var_bel_54wd = $var_pl_1to10_04;
$var_bel_36wn = $var_pl_1to10_05;
$var_bel_moon = $var_pl_1to10_06;
break;
}

SetValue(56061 /*[Wohnung\Wohnzimmer\Aquarium\Beleuchtung\2x 36 Watt nicht dimmbar]*/,$var_bel_36wn);
SetValue(36597 /*[Wohnung\Wohnzimmer\Aquarium\Beleuchtung\2x 54 Watt dimmbar]*/,$var_bel_54wd);
SetValue(12680 /*[Wohnung\Wohnzimmer\Aquarium\Beleuchtung\Mondlicht]*/,$var_bel_moon);
?>

Wie man sehen kann, wird mit

$fp = fsockopen($ip, $port); die Verbindung zum Profilux hergestellt.
Nach dem Einlesen des XML-Files wird vor der Interpretation mit

fclose($fp); der Socket wieder geschlossen.

Von daher: Es entsteht immer nur eine Verbindung zum Server - außer der Profilux braucht länger als 5 Minuten mit der Antwort. Aus Sicht des Profilux ist das so, wie wenn ich vor dem PC sitze & alle 5 Minuten auf die F5-Taste drücke um das aktuelle XML-File zu laden.

Ach ja, ich lese natürlich das Default-XML File ein, keine "eigene Seite"...

Hilft das weiter?


Ich logge inzwischen die Antwortzeiten mit. Wenn wieder Probleme auftreten kann ich das dann genau belegen und werde das Ticketsystem nutzen
Wie hast du das realisiert? Evtl. kann ich mein Script diesbezüglich noch etwas erweitern...

Viele Grüße,
Markus

Wirus
11.08.2010, 09:44
Wie hast du das realisiert? Evtl. kann ich mein Script diesbezüglich noch etwas erweitern...

Das ist einfach:

<?php
$start = microtime(true); // starts runtime check
{ ... normaler Content / Serverabfrage ... }
$delay = microtime(true) - $start; // Calculate delay
?>

In $delay steht dann die benötigte Serverzeit in Sekunden. Die kannst Du dann loggen oder weiterverarbeiten.

BoyScout
11.08.2010, 09:47
Super - vielen Dank für die flotte Antwort...
Wird sofort eingebaut :-)

Viele Grüße aus München,
Markus

diskus
11.08.2010, 19:43
Inwieweit geht die Abfrage des NTP-Zeitservers auf die Verlangsamung ein? Hatte Abfrage von 1Minute zweck Tests eingestellt und im Nu war iView blockiert. Eigenartigerweise ist auch der PL mit 5.01 betroffen. Kommuniziert der PL dann so lange mit dem Server, daß die Abfragen kaum noch möglich sind.

Mathias-Steffen
12.08.2010, 08:13
Kurze Zwischenmeldung: Wir stellen das Datenpollingproblem momentan in unserem Entwicklungsbereich nach und fahren einige Tests. Wir geben eine Rückmeldung, sobald es nähere Erkenntnisse gibt. :)

Wirus
12.08.2010, 09:06
Kurze Zwischenmeldung: ...

Das ist doch mal ein Wort - Danke!

Dann warten wir mal ab. Bei mir geht zwischenzeitlich nichts mehr, Antwortzeiten von ~ 45 Sekunden lösen bei meinem Server zuverlässig den Timeout aus.

BoyScout
12.08.2010, 10:35
Sehr schön - das freut mich zu hören...
Anbei meine Antwortzeiten:
732

Ach ja: ich habe im PHP-Script den Timeout fest auf 25 Sekunden gestellt, von daher ist 25 Sekunden mit "keiner Antwort" gleichzusetzen.
Ich denke die genauen Zeiten größer 25Sek sollten auch nicht relevant sein...

Hier das aktuelle Script:

<?php
/**
* Profilux Comunication with GHL XML-File
* version: 1.01
*
* NOTES:
* - Fist release of the script.
*
* Written by Markus Kromberg
* http://www.kromberg.tk
*
*/


function get_string_between($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}

/* Config-Area */
$server = "W.X.Y.Z"; //IP eintragen!
$port = "80";
$file = "/Status.rss";

$start = microtime(true); // starts runtime check
$cont = "";
$ip = gethostbyname($server);
$fp = fsockopen($ip, $port, $errno, $errstr, 25);
if (!$fp)
{
$delay = microtime(true) - $start; // Calculate delay
$delay = round($delay, 0);
echo $delay;
SetValue(10371 /*[Wohnung\Wohnzimmer\Aquarium\Antwortzeit]*/,$delay);
$var_error = 1;
}
else
{
$com = "GET $file HTTP/1.1\r\nAccept: */*\r\nAccept-Language: de-ch\r\nAccept-Encoding: gzip, deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\nHost: $server:$port\r\nConnection: Keep-Alive\r\n\r\n";
fputs($fp, $com);
while (!feof($fp))
{
$cont .= fread($fp, 500);
}
fclose($fp);
$cont = substr($cont, strpos($cont, "\r\n\r\n") + 4);
$delay = microtime(true) - $start; // Calculate delay
$delay = round($delay, 0);
echo $delay;
SetValue(10371 /*[Wohnung\Wohnzimmer\Aquarium\Antwortzeit]*/,$delay);

/* Convert 2 UTF-8 */
$var_site = utf8_encode($cont);

/* XML in Array umwandeln */
$xml = simplexml_load_string($var_site);

/* Variablen parsen */
$var_pl_zeit = get_string_between($var_site, "<time>", "</time>");
$var_pl_date = get_string_between($var_site, "<date>", "</date>");
$var_pl_model = get_string_between($xml->entry[0]->content, "Modell: ", ", S/N:");
$var_pl_fwver = get_string_between($xml->entry[0]->content, "FW-Version ", " vom");
$var_pl_fwdate = get_string_between($var_site, "<firmware_date>", "</firmware_date>");

$var_pl_1to10_01 = intval(get_string_between($var_site, '<content>Beleucht. 1', "</content>"));
$var_pl_1to10_02 = intval(get_string_between($var_site, '<content>Beleucht. 2', "</content>"));
$var_pl_1to10_03 = intval(get_string_between($var_site, '<content>Beleucht. 3', "</content>"));
$var_pl_1to10_04 = intval(get_string_between($var_site, '<content>Beleucht. 4', "</content>"));
$var_pl_1to10_05 = intval(get_string_between($var_site, '<content>Beleucht. 5', "</content>"));
$var_pl_1to10_06 = intval(get_string_between($var_site, '<content>Beleucht. 6', "</content>"));

$var_pl_power_01 = $xml->entry[9]->content;
$var_pl_power_02 = $xml->entry[10]->content;
// $var_pl_power_03 = $xml->entry[11]->content;
$var_pl_power_04 = $xml->entry[11]->content;
// $var_pl_power_05 = get_string_between($var_site, '<kanal id="S 5">', "</kanal>");
$var_pl_power_06 = $xml->entry[12]->content;
$var_pl_power_07 = $xml->entry[13]->content;

/* PH-Wert */
$var_pl_sens_01_capt = $xml->entry[1]->summary;
$var_pl_sens_01_val = get_string_between($xml->entry[1]->content, 'pH 1', "pH ");
$var_pl_sens_01_val = floatval(trim(str_replace(",", ".", $var_pl_sens_01_val)));

/* Temperatur */
$var_pl_sens_02_capt = $xml->entry[2]->summary;
$var_pl_sens_02_val = get_string_between($xml->entry[2]->content, 'Temp 1', "C ");
$var_pl_sens_02_val = floatval(trim(str_replace(",", ".", $var_pl_sens_02_val)));

/* Variablen abspeichern */
if ($var_pl_power_01 == "Ein") { SetValue(24180 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 1]*/,TRUE); } else { SetValue(24180 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 1]*/,FALSE); }
if ($var_pl_power_02 == "Ein") { SetValue(43620 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 2]*/,TRUE); } else { SetValue(43620 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 2]*/,FALSE); }
// if ($var_pl_power_03 == "Ein") { SetValue(36035 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 3]*/,TRUE); } else { SetValue(36035 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 3]*/,FALSE); }
if ($var_pl_power_04 == "Ein") { SetValue(34376 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 4]*/,TRUE); } else { SetValue(34376 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 4]*/,FALSE); }
// if ($var_pl_power_05 == "Ein") { SetValue(56665 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 5]*/,TRUE); } else { SetValue(56665 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 5]*/,FALSE); }
if ($var_pl_power_06 == "Ein") { SetValue(28024 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 6]*/,TRUE); } else { SetValue(28024 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 6]*/,FALSE); }

/* Plausibilitäts-Check & speichern*/
if ($var_pl_sens_01_val > 9.5) $var_pl_sens_01_val = "_error_";
if ($var_pl_sens_01_val < 5.5) $var_pl_sens_01_val = "_error_";
if ($var_pl_sens_01_val != "_error") SetValue(39430 /*[Wohnung\Wohnzimmer\Aquarium\PH]*/,$var_pl_sens_01_val);

if ($var_pl_sens_02_val > 35) $var_pl_sens_02_val = "_error_";
if ($var_pl_sens_02_val < 15) $var_pl_sens_02_val = "_error_";
if ($var_pl_sens_02_val != "_error") SetValue(28818 /*[Wohnung\Wohnzimmer\Aquarium\Wassertemperatur]*/,$var_pl_sens_02_val);

/* Beleuchtung zuordnen & speichern */
switch (date("N"))
{
case 1:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 2:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 3:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = 0;
$var_bel_moon = $var_pl_1to10_03;
break;
case 4:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 5:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 6:
$var_bel_54wd = $var_pl_1to10_04;
$var_bel_36wn = $var_pl_1to10_05;
$var_bel_moon = $var_pl_1to10_06;
break;
case 7:
$var_bel_54wd = $var_pl_1to10_04;
$var_bel_36wn = $var_pl_1to10_05;
$var_bel_moon = $var_pl_1to10_06;
break;
}

SetValue(56061 /*[Wohnung\Wohnzimmer\Aquarium\Beleuchtung\2x 36 Watt nicht dimmbar]*/,$var_bel_36wn);
SetValue(36597 /*[Wohnung\Wohnzimmer\Aquarium\Beleuchtung\2x 54 Watt dimmbar]*/,$var_bel_54wd);
SetValue(12680 /*[Wohnung\Wohnzimmer\Aquarium\Beleuchtung\Mondlicht]*/,$var_bel_moon);
}
?>

Viele Grüße,
Markus

Matthias
12.08.2010, 16:59
ich habe jetzt mit "Webserver Stress Tool 7" unseren Webserver übel gestresst - 10 User gleichzeitig, alle laden irgendwelche Seiten im 1s-Takt (auch gleichzeitig)

es kommt zwar zu Fehlern, die werden aber korrigiert und die Antwortzeit bleibt unter 2s

740

nach ca. 3000 Zugriffen lebt der Webserver immer noch

Verbindung über VPN (DSL), also nicht im lokalen Netzwerk

ich bin mittlerweile wirklich etwas ratlos, wir bekommen den Fehler einfach nicht hin

Kann mir jemand per PM die IP seines Problem-P3s geben, damit ich den Stress-Test mal von hier aus mache? Ich werde auch nur lesend drauf zugreifen!

Wirus
12.08.2010, 17:55
PM ist raus

Vermutlich liegt es eher an der Langzeitbelastung bzw. dem Wechselspiel Abfrage - Connection timeout - nächste Abfrage
fletch von marinemad.com hat wohl auch massive Probleme damit - http://www.aquariumcomputer.com/Forum/showthread.php?2713-Firmware-Version-5.02

diskus
12.08.2010, 19:16
PM ist raus

Diese Feststellung habe ich übrigens am 27.07.10 als Email an GHL geschickt......was fletch ausführt.

BoyScout
13.08.2010, 07:33
ich bin mittlerweile wirklich etwas ratlos, wir bekommen den Fehler einfach nicht hin


Bei mir ist das Phänomen auch erst nach einigen Tagen aufgetreten - am Anfang lief alles wunderbar...
Lasst den Stress-Test mal über das Wochenende laufen, dann wissen wir Montag mehr :-)

Wenn ihr ein weiteres System zum Testen (lesen) braucht, mein PIII hängt auch am Internet. Schickt mir kurz ne PN, dann lasse ich euch die Zugangsdaten zukommen.

745
Tja, gestern war wenigstens zwischendurch noch lesender Zugriff möglich, jetzt ist seit 23.00 Uhr gestern Abend der PIII per Web nicht mehr erreichbar.

Gruß & viel Erfolg bei der Fehlersuche,
Markus

diskus
13.08.2010, 08:22
Ja zur Zeit, seit ca. 12 Stunden, ist alles noch "superflink".

@ Matthias neue PM zur IP geht jetzt raus..

Matthias
13.08.2010, 18:39
ich hatte heute kaum noch Zeit, das weiterzuverfolgen, kümmere mich morgen wieder drum

raik
14.08.2010, 16:22
ich persönlich habe auch das problem ich habe insgesammt 2 pl3 ex und 1pl3 und bei allen das problem das die extrem langsam werden, aber einer hängt nur zum testen am netz und steuert nur das licht, die anderen 2sind voll ausgebaut und bei allen das problem, deswegen ist mir unklar warum sie es nicht nachstellen können.
achso und nur auf einen greift madmarine zu die andren 2 werden nur mal vom internet aus aufgerufen, naja oder auch nicht.


mfg raik

BoyScout
18.08.2010, 07:16
Na - wie geht's hier weiter? Konnte der Fehler mittlerweile reproduziert werden?
765

Gruß,
Markus

Mathias-Steffen
18.08.2010, 07:31
Wir arbeiten noch daran...

Matthias
18.08.2010, 19:12
siehe Post zu 5.02h von heute - es gibt neue Firmware die an der Stelle geändert wurde - bitte Feedback ob sich die Änderung ausgewirkt hat

wir konnten das Problem bisher noch nicht bei uns nachstellen, allerdings haben uns einige User, die das Problem habebn, Zugriff auf Ihren ProfiLux gegeben - wir sind da bei denen am forschen

BoyScout
25.08.2010, 15:43
Hallo Matthias,

so, das schaut schon sehr gut aus - die Antwortzeiten sind jetzt deutlich stabiler:
773

Anmerkungen zur Grafik:
- bislang erfolgte auf jede Anfrage (HTTP-Request) eine Antwort
- die maximale Antwortzeit liegt bei 2 Sekunden
- Timeouts (= Antwortzeit länger als 25 Sekunden) sind nicht mehr aufgetreten
- keine Antwort erfolgt unter eine Sekunde, anscheinend braucht der Webserver mindestens 1 Sekunde zur Aufbereitung der RSS-Seite

Alles in Allem bin ich mit dem derzeitigen Stand sehr zufrieden, wobei mich natürlich die Antwortzeit von 1 Sekunde (im Optimalfall) sehr stutzig macht...

Viele Grüße,
Markus

Wirus
25.08.2010, 16:05
so, das schaut schon sehr gut aus - die Antwortzeiten sind jetzt deutlich stabiler

Das kann ich voll und ganz bestätigen 774

Anmerkungen zur Grafik:
bislang erfolgte auf jede Anfrage (HTTP-Request) eine Antwort ausser wenn mein Router gerade mal neu verbunden hat
die maximale Antwortzeit liegt bei <1 Sekunde mit gelegentlichen Dropouts von 2-6 Sekunden - Abfrage alle 5 Minuten
Timeouts (= Antwortzeit länger als 25 Sekunden) sind nicht mehr aufgetreten
die meisten Antworten erfolgen zwischen 0,6 und 0,9 Sekunden, anscheinend braucht der Webserver für meine seite mit Tokens wesentlich kürzer
ohne Webseite ist die Antwortzeit wesentlich kürzer (0,2-0,4 Sekunden), siehe Grafik ganz links. Da hatte ich von der Vorabversion auf die offizielle 5.02h umgestellt und meine Datei mit den Token vergessen .....



Alles in Allem bin ich mit dem derzeitigen Stand sehr zufrieden

Dito.


wobei mich natürlich die Antwortzeit von 1 Sekunde (im Optimalfall) sehr stutzig macht...

Mit Token geht es schneller ;) - und einfacher. Nix parsen oder so

BoyScout
25.08.2010, 16:12
*g* ich wollte mich ja nur an den Standard halten - um Fehler in der User-Seite ausschließen zu können...
So ist alles "100% made by GHL" ;-)

Gruß,
Markus

Mathias-Steffen
26.08.2010, 07:09
Bitte bedenken Sie, daß in der RSS-Datei diverse Schleifen vorhanden sind und ausnahmslos alle Daten ausgeliefert werden, wenn Sie speziell einige Funktionen herausgreifen wollen, ist deshalb eine selbstgeschriebene Datei performanter.

BoyScout hat allerdings recht, für Testzwecke empfiehlt es sich, erst einmal bei den mitgelieferten Dateien zu bleiben, da diese von uns in aller Regel schon intensiv vorgetestet wurden... (auch wenn sich natürlich auch bei uns mal ein Fehler einschleichen kann :) )