anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: So 24 Sep, 2017 11:23

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: HTTPS Geschwindigkeitsunterschiede
BeitragVerfasst: Sa 07 Jan, 2017 02:00 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 95
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
Frohes Neues Zusammen :)

Ich wage mich nach nunmehr über 8 Jahren LogD-Server-Erfahrung einen alten Hasen zu schimpfen, stehe aber gerade wieder vor einem Problem an dem ich nicht so recht weiter komme und vielleicht weiß hier ja Jemand einen guten Rat.

Letztes Jahr am 31.08. haben wir unseren Server mit einem Zertifikat ausgestattet, sodass auch der Aufruf über https:// ohne Probleme und Sicherheitshinweise erfolgen kann. Geplant war, http:// Verbindungen gar nicht mehr zu erlauben und grundsätzlich auf https:// umzustellen.

Anfangs lief alles auch wie gewünscht, zumal wir kurz zuvor auf einen neuen Server und PHP 7 umgestiegen waren. Doch irgendwann fing es an über https:// extrem zu hängen, ein Leveln im Wald war so undenkbar. Ich habe das ganze dann einfach weiter über http:// laufen lassen und das Thema bis auf weiteres ruhen lassen. Nun aber wollte selbiges gerne wieder aufgreifen und habe mich etwas in das Thema Cipher Suites eingelesen. Ich wollte das entsprechend auf unserem "Testserver" ausprobieren und wollte natürlich erstmal Referenzwerte ermitteln bevor ich Änderungen vornehme um später vergleichen zu können.

Dabei ist mir nun aber aufgefallen, dass der Testserver diese Probleme in der Geschwindigkeit nicht hat und das, obwohl das ja die selbe Maschine ist (lediglich eine Verzeichnis-Hierarchie tiefer und andere DB). Ich kann mir das nicht erklären ... Es gibt keine abweichenden Einstellungen für das Verzeichnis /test/ die .htaccess Datei vererbt sich auch auf das Unterverzeichnis, es ist eigentlich alles gleich und weiß daher nicht wo ich ansetzen soll ...

Wenn Jemand einen Denkanstoß hat wäre das echt toll ^^

Header:
- Server: https://picload.org/image/rawlocap/header-https-server.png
- Testserver: https://picload.org/image/rawlocog/header-https-testserver.png

Timeline:
- Server: https://picload.org/image/rawlococ/timeline-https-server.png
- Testserver: https://picload.org/image/rawlocop/timeline-https-testserver.png

Site-Gen:
- Server: https://picload.org/image/rawlocod/sitegen-https-server.png
- Testserver: https://picload.org/image/rawlocoo/sitegen-https-testserver.png


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 09 Jan, 2017 14:34 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3890
Wohnort: Basel
Geschlecht: Männlich
Das allerwichtigste ist.... das Copyright. Die Source (bzw das, was zugänglich ist), sieht nicht wirklich viel anders aus als im Original, abgesehen davon dass Begriffe ins deutsche Übersetzt worden ist. Du kannst das Copyright erweitern (2002-2003 Eric Stevens, 2008-2016 du), aber das wars auch schon.

Zurück zum Thema: Der wichtigste Unterschied liegt wahrscheinlich darin, dass die Anzahl paralleler Seitenzugriffe auf dem Live-Verzeichnis höher sein dürfte als im Unterverzeichnis. Wenn mehrere Personen gleichzeitig auf den Server zugreifen, ist die Last dementsprechend höher als wenn nur eine Person auf dem Test-Server agiert. Wenn die Serverlast höher ist, wird PHP vermutlich länger brauchen, was die höheren Sitegen-Zeiten erklären kann (aber nicht muss).

Allerdings kann ich mir nicht vorstellen, dass der SSL-overhead soviel grösser ist als die Zeit, die fürs sitegen verbraten wird. Ich würde das an deiner Stelle einfach nochmal aktuell testen - und https nur über eine IP (deine) zulassen. So kannst du ausschliessen, dass andere User dir da reinpfuschen (Manche Browser-Clients nehmen https automatisch wenn verfügbar).

"Andere DB" - andere Datenbank, aber schon gleiche Datenbanksoftware?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 09 Jan, 2017 19:52 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 95
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
Der Grund dafür lag darin begründet, dass es mittlerweile (vermutlich) keine einzige Datei und/oder Funktion mehr gibt, die wir nicht in irgendeiner Art und Weise abgeändert oder sogar komplett neu geschrieben haben, es ist nicht so das wir nur die Dateinamen umbenannt haben ;-) Wir haben noch viele Ideen, die dann vermutlich einem kompletten rewrite gleich kommen, sodass am Ende nur noch die Namen der Funktionen und die ursprüngliche Grundidee daher erhalten bleiben, aber ich habe da auch kein Problem mit das entsprechend anzupassen ^^ (Nur zum Verständnis)

In dem Punkt magst du natürlich recht haben, aber dahinter steckt ein und derselbe Server (Apache2 + MariaDB) und es spielt im Prinzip auch keine Rolle wann ich diesen Vergleich durchführe.
Im Moment sind 9 Spieler online und allein wenn ich die Startseite aufrufe habe ich einen doppelt so langen Sitegen. Auch wenn ich das ganze um 2 oder 4 Uhr Nachts mache kommt es immer aufs selbe raus, dass das Testverzeichnis flutscht wie Schmidts Katze, eine Ebene höher und ich könnte mir in Afrika persönlich Kaffeebohnen abholen ...


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 09 Jan, 2017 20:02 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3890
Wohnort: Basel
Geschlecht: Männlich
Einfach nur zur Klarstellung: Wenn du Test- und Liveserver testest, aktivierst du https für die ganze Domäne? Oder nur Verzeichnis-Weise?

Edit: Die apache-Konfiguration wäre hier hilfreich (also je .htaccess oder die globale Konfiguration, je nach dem wo du das spezifiziert hast).

Edit-2: Hast du die Konfiguration grad im Moment an? Bei mir gibt es punkto php-pagegen kein Unterschied zwischen http und https im Hauptverzeichnis, nur zwischen Test- und Liveserver. Der Unterschied liegt bei ca 100%. Das kann verschiedene Ursachen haben, da der Quelltext aber der selbe ist, wird vermutlich die Datenbank schuldig sein.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 09 Jan, 2017 21:56 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 95
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
Zunächst einmal haben wir zwei Domains, die je mit und ohne www. aufgerufen werden können.
http://www.sotbd.de
http://www.soul-of-the-black-dragon.de
Der Zertifikat ist seit letztem Jahr auf dem Server, aktiv und gilt für beide Domains.

Bei meinen Tests beschränke ich mich je auf eine Domain, die ich entsprechend aufrufe z.B.
https://www.sotbd.de/
https://www.sotbd.de/test/
Dann rufe ich nacheinander die gleichen Unterseiten auf und vergleiche die Ergebnisse miteinander.

Quelltext und Datenbank sind zu 99% identisch. Wenn ich Test und Live Verzeichnis mit http ansurfe verhält sich beides so ziemlich identisch.
Wechsel ich jedoch auf https treten diese enormen Unterschiede zu Tage. Teilweise doppelt so lange, durchaus aber auch 3-4 Mal.
Am deutlichsten tritt das wirklich beim Leveln im Wald zu Tage, da wird das auch beim page-gen deutlich.
Ich habe gerade wieder den Testaccount aktiviert, falls du das auch Mal austesten willst.

mit http: Seitengenerierung: 0.09 Sekunden - Durchschnitt: 0.21 Sekunden
mit https: Seitengenerierung: 0.37 Sekunden - Durchschnitt: 0.15 Sekunden

.htaccess
Code:
#RewriteEngine On
#RewriteCond %{SERVER_PORT} !=443
#RewriteRule ^(.*)$ https://sotbd.de/$1 [R=301,L]

Header append Strict-Transport-Security "max-age=31536000"
Header append Content-Security-Policy: "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'; style-src 'self' 'unsafe-inline'; img-src *; media-src 'none'; frame-src https://www.facebook.com; font-src 'self'; connect-src 'self'"
Header append X-Content-Type-Options "nosniff"
Header append X-Frame-Options "deny"
Header append X-Xss-Protection "1; mode=block"

<IfModule mod_expires.c>
    <FilesMatch "\.(jpe?g|png|gif|js|css)$">
        ExpiresActive On
        ExpiresDefault "access plus 1 week"
    </FilesMatch>
</IfModule>



Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 09 Jan, 2017 22:52 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3890
Wohnort: Basel
Geschlecht: Männlich
Wirklich seltsam. Längere Response-Zeiten sind zu erwarten mit https, aber dass das so massiv auf die php-gen Zeiten schlägt... Das einzige, was du tun kannst, ist, den Bottle-Neck im Code zu finden - und die Unterschiede im Code zwischen Test- und Live-Server aufzuspüren. Greiftst du mit curl oder file_get_contents auf irgendwelche Ressourcen auf deinem Server via http zu?

Via ssh auf dem Server:
Code:
diff --brief -Nr dir1/ dir2/


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi 11 Jan, 2017 17:14 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 95
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
Ich werdw versuchen die beiden Verzeichnisse soweit es geht aneinander anzugleichen im Moment liefert mir diff im Prinzip für jede einzelne Datei einen Unterschied was ja auch keinen Sinn ergibt. curl() verwende ich überhaupt nicht und das einzige file_get_contents() befindet sich in der common.php um das Template zu laden:
Code:
$file = file_get_contents("templates/".$templatename);


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 12 Jan, 2017 08:53 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3890
Wohnort: Basel
Geschlecht: Männlich
Mein Vorschlag:

  • Backup vom Test-Verzeichnis, dann die Live-Server-Dateien rüberkopieren. Wenn die Geschwindigkeitsprobleme anhalten, ist es ein spezifisches Problem mit deinen PHP-Dateien.
  • Schreibe dir ein einfaches Script, das sich mit der entsprechenden logd-Datenbank verbindet (live vs test), ein paar Datensätze abholt (1 Character, ein paar Items, ein paar News - was so typischerweise anfällt) und die Datensätze auch ausgibt (var_dump reicht). Messe die Zeit vom Script-Start mit Script-Ende mit microtime. Siehst du da auch Unterschiede? (Am besten nimmst du den Durchschnitt über mehrere Aufrufe zu verschiedenen Zeiten).
  • Verwende in Zukunft eine Versionskontrolle (git!). Damit kannst du schneller die Unterschiede zwischen Live- und Testserver finden und besser kontrollieren.

Btw - welche PHP-Version verwendest du?

PHP:
<?php

$start_time = microtime(true);

// Dein Script

$end_time = microtime(true);

print("Time consumed: " . ($end_time - start_time));?>


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum