<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Ergänzung:</p>
    <p>ich hab mir die "vielen" SQLs mal genauer angesehen, die sind
      offenbar alle von den verschiedenen Tests, d.h. sie sind nur von
      dem Benchmark-Request, nicht von anderen Aufrufen an die
      middleware.</p>
    <p>Jeder Request scheint immer einen solchen Block zu verursachen:</p>
    <pre>{
                                        "sql": "SELECT MAX(timestamp) FROM data WHERE channel_id=1 AND timestamp < (SELECT MAX(timestamp) FROM data WHERE channel_id=1 AND timestamp<1287541654974)",
                                        "execTime": 0.0016069412231445
                                },
                                {
                                        "sql": "SELECT MIN(timestamp) FROM data WHERE channel_id=1 AND timestamp>1288488900567",
                                        "execTime": 0.00099301338195801
                                },
                                {
                                        "sql": "SELECT aggregate.type, COUNT(aggregate.id) AS count FROM aggregate INNER JOIN entities ON aggregate.channel_id = entities.id WHERE uuid = 'a301d8d0-903b-1234-94bb-d943d061b6a8' GROUP BY type HAVING count > 0 ORDER BY type DESC",
                                        "execTime": 0.00036096572875977
                                },
                                {
                                        "sql": "SELECT UNIX_TIMESTAMP(FROM_UNIXTIME(MIN(timestamp) \/ 1000, \"%Y-%m-%d\")) * 1000 FROM aggregate WHERE channel_id=1 AND type=3 AND timestamp >= UNIX_TIMESTAMP(DATE_ADD(FROM_UNIXTIME(1287541531460 \/ 1000, \"%Y-%m-%d\"), INTERVAL 1 day)) * 1000",
                                        "execTime": 0.00032901763916016
                                },
                                {
                                        "sql": "SELECT UNIX_TIMESTAMP(DATE_ADD(FROM_UNIXTIME(MAX(timestamp) \/ 1000, \"%Y-%m-%d\"), INTERVAL 1 day)) * 1000 FROM aggregate WHERE channel_id=1 AND type=3 AND timestamp<1288488900567",
                                        "execTime": 0.00030303001403809
                                },
                                {
                                        "sql": "SELECT SUM(count) FROM (SELECT COUNT(1) AS count FROM data WHERE channel_id = 1 AND ( timestamp >= 1287541531460 AND timestamp < 1287612000000 OR timestamp >= 1288476000000 AND timestamp <= 1288488900567) UNION SELECT SUM(count) AS count FROM aggregate WHERE channel_id = 1 AND type = 3 AND timestamp >= 1287612000000 AND timestamp < 1288476000000) AS agg",
                                        "execTime": 0.0071568489074707
                                },
                                {
                                        "sql": "SELECT MAX(agg.timestamp) AS timestamp, SUM(agg.value) AS value, COUNT(agg.value) AS count FROM (SELECT timestamp, value, @row:=@row+1 AS row FROM data CROSS JOIN (SELECT @row := 19) AS vars WHERE channel_id=1 AND timestamp >= 1287541531460 AND timestamp <= 1288488900567 ORDER BY timestamp ASC) AS agg GROUP BY row DIV 21 ORDER BY timestamp ASC",
                                        "execTime": 0.3626811504364
                                },
                                {
                                        "sql": "SELECT 1",
                                        "execTime": 0.0005497932434082
                                }</pre>
    <p>Grüße</p>
    <p>Sirko<br>
    </p>
    <br>
    <div class="moz-cite-prefix">Am 04.01.2017 um 11:32 schrieb Sirko:<br>
    </div>
    <blockquote
      cite="mid:fb6c637e-e65c-ac1f-6d7e-5069b9b6fa84@nurfuerspam.de"
      type="cite">
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
      <p>Hi,</p>
      <p><br>
      </p>
      <p>danke, ich hab's zum Laufen gekriegt. Zunächst nur von
        Kommandozeile ohne Webserver-Änderung (bei mir läuft auch
        lighttpd).</p>
      <p>Ich hab aber mal die Benchmark-URL aufgerufen (<a
          moz-do-not-send="true" class="moz-txt-link-freetext"
          href="http://wiki.volkszaehler.org/development/benchmark">http://wiki.volkszaehler.org/development/benchmark</a>),
        einmal über die middleware und einmal über ppm auf Port 8088:</p>
      <p><a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://192.168.178.23/middleware.php/data/a301d8d0-903b-1234-94bb-d943d061b6a8.json?from=1287541654974&to=1288488900567&tuples=1000&debug=1">http://192.168.178.23/middleware.php/data/a301d8d0-903b-1234-94bb-d943d061b6a8.json?from=1287541654974&to=1288488900567&tuples=1000&debug=1</a><br>
      </p>
      <p><a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://192.168.178.23:8088/data/a301d8d0-903b-1234-94bb-d943d061b6a8.json?from=1287541654974&to=1288488900567&tuples=1000&debug=1">http://192.168.178.23:8088/data/a301d8d0-903b-1234-94bb-d943d061b6a8.json?from=1287541654974&to=1288488900567&tuples=1000&debug=1</a></p>
      <p><br>
      </p>
      <p>Beobachtung:</p>
      <p>1. die Ausgaben sind unterschiedlich, bei wiederholten Aufrufen
        über ppm wird die Zeit immer langsamer und es werden SQLs mit
        ausgegeben. Und zwar mit jedem Aufruf immer mehr. Möglicherweise
        die, die in der Zwischenzeit an die middleware gingen?</p>
      <p>2. Wenn ich debug=5 setze und dann wieder zurück, dann ist der
        debug level wert in der Antwort nicht immer der, der in der URL
        steht (bei Aufrufen über ppm). Man hat das Gefühlt, als ob er
        den alten level wert noch irgendwo gecacht hat.</p>
      <p><br>
      </p>
      <p>Ausgabe middleware:</p>
      <pre>{
        "version": "0.3",
        "debug": {
                "level": "1",
                "database": "pdo_mysql",
                "time": 0.01193,
                "uptime": 8217586560,
                "load": [
                        0.15,
                        0.13,
                        0.14
                ],
                "commit-hash": "350a18ca50793e2b8a121a5ec4656f9486b36592",
                "php-version": "5.6.24-0+deb8u1",
                "messages": []
        },
        "data": {
                "tuples": [
...


</pre>
      <p>Ausgabe ppm:</p>
      <pre>{
        "version": "0.3",
        "debug": {
                "level": "1",
                "database": "pdo_mysql",
                "time": 621.52648,
                "uptime": 8217662030,
                "load": [
                        0.11,
                        0.13,
                        0.13
                ],
                "commit-hash": "350a18ca50793e2b8a121a5ec4656f9486b36592",
                "php-version": "5.6.24-0+deb8u1",
                "messages": [],
                "sql": {
                        "totalTime": 2.032665014267,
                        "worstTime": 0.36454510688782,
                        "queries": [
                                {
                                        "sql": "SELECT MAX(timestamp) FROM data WHERE channel_id=1 AND timestamp < (SELECT MAX(timestamp) FROM data WHERE channel_id=1 AND timestamp<1287541654974)",
                                        "execTime": 0.0016129016876221
                                },
und noch hunderte Zeilen sql statements vor den tuples
</pre>
      Aber, nach einem Neustart des ppm ist nur ein SQL drin (zur
      Erinnerung, die selbe URL über die middleware hatnie SQLs drin in
      der Ausgabe):<br>
      <br>
      <pre>{
        "version": "0.3",
        "debug": {
                "level": "1",
                "database": "pdo_mysql",
                "time": 0.68394,
                "uptime": 8217756610,
                "load": [
                        0.04,
                        0.11,
                        0.13
                ],
                "commit-hash": "350a18ca50793e2b8a121a5ec4656f9486b36592",
                "php-version": "5.6.24-0+deb8u1",
                "messages": [],
                "sql": {
                        "totalTime": 0.0038230419158936,
                        "worstTime": 0.0038230419158936,
                        "queries": [
                                {
                                        "sql": "SELECT e0_.id AS id_0, e0_.uuid AS uuid_1, e0_.type AS type_2, p1_.id AS id_3, p1_.pkey AS pkey_4, p1_.value AS value_5, e0_.class AS class_6, p1_.entity_id AS entity_id_7 FROM entities e0_ LEFT JOIN properties p1_ ON e0_.id = p1_.entity_id WHERE (e0_.uuid = 'a301d8d0-903b-1234-94bb-d943d061b6a8') AND e0_.class IN ('channel', 'aggregator') ORDER BY p1_.pkey ASC",
                                        "execTime": 0.0038230419158936
                                }
                        ]
                }
        },
        "data": {
                "tuples": [</pre>
      <br>
      mfg<br>
      Sirko<br>
      <br>
      <div class="moz-cite-prefix">Am 04.01.2017 um 10:41 schrieb
        Andreas Goetz:<br>
      </div>
      <blockquote
cite="mid:CAD+a8MhXugYYJchY_Gtbpnf_KRcAZrGkO-OvqDbXCvEc1Dw1UA@mail.gmail.com"
        type="cite">
        <div dir="ltr">
          <div>
            <div>Gut, dann wissen wir jetzt über welche Funktion Andre
              gestolpert ist. Also in der php.ini die <span
                class="gmail-im">disable_functions auskommentieren!<br>
                <br>
              </span></div>
            <span class="gmail-im">Viele Grüße,<br>
            </span></div>
          <span class="gmail-im">Andreas<br>
            <br>
          </span></div>
        <br>
      </blockquote>
      <br>
    </blockquote>
    <br>
  </body>
</html>