• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Apache Performance .....

braegler

Aktiver NGBler

Registriert
14 Juli 2013
Beiträge
896
Nabend zusammen,

ich bastle gerade an einem kleinen Projekt und bin auf etwas gestossen, dass ich nicht ganz verstehe
https://github.com/schnoog/multi_newscrawler - läuft auf newscrawler.eu
Hintergrund: Britischer Kollege möchte die UK Klatschpresse "analysieren". Dazu werden die Headlines von bisher Express und Daily Fail in einer MySQL DB gespeichert.
Struktur:
Die Daten liegen in einer einzelnen Memory-table (1.6m Einträge).
Betrieben wird das ganze auf php Basis mit Apache.

Sobald ich grössere Datenmengen abfrage, sehe ich komische Effekte. Die Datebank-Abfrage läuft soweit "rund" (wildcard auf varchars, daher auch mal ein paar Sekunden).
Die Daten werden mit Smarty geparst und in einer riegigen Tabelle ausgegeben.

Beispiel:
Zeit vom start des php Skriptes bis Smarty alles geparst und ausgegeben hat: 1.2 Sekunden
Content Download Grösse: 2.9MB
Content Download Zeit: 1.3 Minuten
Lade ich eine Datei direkt vom Webserver, liefert Apache mir diese in "Fullspeed" (also was meine Land-DSL Leitung hergibt aus)

Mal ein Chrome-Debug-Screenshot:
newscrawler_debug.jpg

Hat jemand von Euch zufällig eine Ahnung woran des liegen könnte?
 

braegler

Aktiver NGBler

Registriert
14 Juli 2013
Beiträge
896
  • Thread Starter Thread Starter
  • #3
Hier mal die index.php

[src=php]
<?php
include_once("./loader.php");
$data = false;
$time_end = 0;
$cfg['searchtype'] = "list";
if(isset($_POST['search_type'])){
$cfg['searchtype'] = "list";
if($_POST['search_type'] == "Get the Graph"){
$cfg['searchtype'] = "graph";
$time_start = microtime(true);
$data = ProcessRequest();
$data = GetGraphData($data);
$time_end = microtime(true);
}else{
$time_start = microtime(true);
$data = ProcessRequest();
$time_end = microtime(true);
}
$cfg['dbquerytime'] = $time_end - $time_start;
}

if(!isset($_POST['year_from'])) $cfg['post']['year_from'] = date("Y") -1;



$smarty->assign('data',$data);
$smarty->assign('cfg', $cfg);
$smarty->display('index.tpl');

if($time_end >0){
$te = microtime(true);
$td = $te - $time_end;
error_log($td);
}

[/src]

Das interessante ist, dass der php-Code durchrennt. Nach 1.2 Sekunden wurde im meinem Testlauf die Zeile 34 ausgeführt.
Danach dauerte es noch über 1 Minute bis die 2.9MB Content komplett übertragen wurden

Der gesamte Code liegt auf
https://github.com/schnoog/multi_newscrawler


Info zum Indianer:
Server version: Apache/2.4.25 (Debian)
Server built: 2018-11-03T18:46:19
Server's Module Magic Number: 20120211:68
Server loaded: APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"

Das Ding liegt auf https://newscrawler.eu

Zum Nachstellen:
Links auf das Listen-Icon gehen um die 3 vordefinierten Suchkombis auswählen zu können.
Dort z.B. EU & Brexit related wählen, und die Aanzahl der Suchergebnisse auf "unlimited" einstellen -> Get the list.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
Ich glaube dein Javascript rechnet zu viel:

Mal drei Screenshots die das etwas verdeutlichen (Firefox Laufzeitanalyse):
Was auffällt, ständige Layout Änderungen/Stil-Neuberechnungen.

Flow 1:


Flow 2:


Flow 3:



Folgende Ideen dazu:
1) Die filltable.js ersetzen so fern nicht benötigt mit dem teuren [kw]$oldTbody.replaceWith[/kw] in der [kw]each[/kw] in filltable.js ab Zeile 118.
2) Eventuell hilft es auch die Tabelle zu verstecken so lange diese nicht komplett dargestellt ist, das könnte auch die Repaints verringern da der Browser nicht bei jeder neuen Zeile layoutet.
 

braegler

Aktiver NGBler

Registriert
14 Juli 2013
Beiträge
896
  • Thread Starter Thread Starter
  • #5
Danke für Deine Hinweise.
Hab filtable.js mal testweise deaktiviert, änder leider nichts an der Download-Ladezeit.

Die Tabelle zu verstecken bis alle Daten angekommen sind, hat merklich was gebracht. Die DL Zeit ist jetzt bei 8 Sekunden. Danach rendert er dann in weiteren 5-8 Sekunden.
 

Roin

Freier Denker

Registriert
22 Juli 2013
Beiträge
581
Off:
Seit wann sammelst du denn da schon Daten? Oder hast du einfach nachträglich die beiden Seiten massenweise gecrawled? Gibt es da nicht Probleme, wenn du ganze Seiten crawlest? Gerade Nachrichtenportale haben da doch meistens diverse Sicherheitsmechanismen, um das zu verhindern oder täusche ich mich da?
 

braegler

Aktiver NGBler

Registriert
14 Juli 2013
Beiträge
896
  • Thread Starter Thread Starter
  • #7
Tachjen,
hab die Seiten in erst vor wenigen Wochen abgegrast. Beide bisherigen "Opfer" haben recht übersichtliche Archive.
Der erste Versuch war etwas harzig, da bin ich wohl in ein Rate-Limiter reingerannt.
Hab dann einfach einen kleinen Delay eingebaut.
Mit 0.5 Sekunden zwischen den einzelnen Anfragen ging es dann jedoch.
 
Oben