WinFuture-Forum.de: MySQL und SSL wird langsam - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

MySQL und SSL wird langsam

#1 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 929
  • Beigetreten: 14. August 15
  • Reputation: 80

geschrieben 15. Oktober 2016 - 08:17

Ist es normal, dass eine MySQL-Verbindung extrem langsam wird mit aktivierter SSL Verschlüsselung?

Ich habe mir, dank Abstinenz einer XAMPP 64bit Version für Windows eine eigenes Paket aus Apache, MariaDB, MySQL, OpenSSL, PHP5, PHP7, phpMyAdmin (SAMP64) zusammengestellt. Der Webserver sowie die Datenbanken arbeiten mit SSL verschlüsselter Verbindung (man kann die Verschlüsselung aber auch zu Testzwecken deaktivieren).

Bei normalen Aufrufen des Webservers mit https oder mit http ist kaum ein Unterschied festzustellen. Bei der Datenbank ist allerdings der Geschwindigkeitsunterschied extrem. Die verschlüsselte Datenbankverbindung braucht 5-6mal länger in der Reaktionszeit.

Ich habe noch nicht getestet ob Datenbankzugriffe über PHP auch derart ausgebremst werden. Mir ist dieser Unterschied zwischen http und https erstmal nur unter phpMyAdmin aufgefallen. Unverschlüsselt kann man mit dem Tool ziemlich fix arbeiten. Verschlüsselt man aber die Verbindung, dann wird dass ganze zur Warterei.

Die Frage ist hier also, ist dieser Geschwindigkeitsunterschied normal? Tritt dies nur mit MySQL auf oder liegt diese extrem Ausbremsung an phpMyAdmin oder an Windows? Oder aber ist vielleicht ein Config Fehler in phpMyAdmin oder MySQL der Grund für diese Verlangsamung?

Dieser Beitrag wurde von Gispelmob bearbeitet: 15. Oktober 2016 - 10:29

0

Anzeige

#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 7.657
  • Beigetreten: 20. Juli 07
  • Reputation: 845

geschrieben 15. Oktober 2016 - 12:16

Nein, ist nicht normal.

Wie sieht es denn direkt auf der Konsole aus? Also der MySQL-Konsole, meine ich.

Da mal mit SSL verbinden, wie das aussieht. Prüfe auch insbesondere, ob die Verbindung überhaupt mit SSL zustandekommt (Zertifikate sind da, gültig und zugewiesen?) und daß es einfach deswegen länger dauert, weil die Verbindung mit SSL 'versucht' wird und nicht zustandekommt und irgendwann auf non-SSL zurückfällt.

Und ob der Build selber überhaupt SSL-aktiviert ist. Das war nicht immer so und ob es 'jetzt' so ist weiß ich leier auch nicht.

Bei MySQL+kompatiblen findest Du die zugehörigen Informationen in den Umgebungsvariablen der MySQL-Verbindung (SHOW VARIABLE LIKE '%ssl%;').
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 929
  • Beigetreten: 14. August 15
  • Reputation: 80

geschrieben 15. Oktober 2016 - 13:21

show variables like '%ssl%';

| have_openssl  | YES                                                                                           |
| have_ssl      | YES                                                                                           |
| ssl_ca        | D:\SAMP64\data\certs\ca.pem                                                                   |
| ssl_capath    | D:\SAMP64\data\certs                                                                          |
| ssl_cert      | D:\SAMP64\data\certs\server-cert.pem                                                          |
| ssl_cipher    | AES256-SHA:AES256-SHA256:AES256-SHA384:DHE-RSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:
TLSv1.2 |
| ssl_crl       |                                                                                               |
| ssl_crlpath   |                                                                                               |
| ssl_key       | D:\SAMP64\data\certs\server-key.pem                                                           |
9 rows in set, 1 warning (0.00 sec)


Die Verbindung ist schon richtig verschlüsselt. In der Console ist davon nichts zu spüren aber der Unterschied ist in phpMyAdmin deutlich spürbar. Ohne Verschlüsselung werden die Seiten fast instant aufgebaut. Aber mit Verschlüsselung braucht phpMyAdmin bis zu 5 Sekunden oder mehr für eine Seite.

Ich hab jetzt nochmal getestet. In der Console sind Befehle wie show databases; oder show tables from <dbname>; genauso fix wie ohne Verschlüsselung.

Der Verdacht drängt sich auf, dass phpMyAdmin das Problem ist.

Dieser Beitrag wurde von Gispelmob bearbeitet: 15. Oktober 2016 - 13:44

0

#4 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.725
  • Beigetreten: 10. Januar 08
  • Reputation: 415

geschrieben 15. Oktober 2016 - 15:19

Liegt die Datenbank auf der gleichen Maschine, von der auf sie zugegriffen wird? In dem Fall ist Verschlüsselung der Datenbankverbindung eigentlich Quatsch, da nix sichtbar übers Netzwerk geht.

Lieber die Datenbank so einstellen, dass nur noch lokale Zugriffe möglich sind:
- my.cnf: bind-address = 127.0.0.1
- GRANTS: auf 'user'@'localhost' begrenzen und alle @'%' Berechtigungen auf localhost umstellen.

Zweitens: was ist denn da für Hardware drunter? Wir da AES-Crypto schon nativ unterstützt?

Dieser Beitrag wurde von Sturmovik bearbeitet: 15. Oktober 2016 - 15:20

«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#5 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 929
  • Beigetreten: 14. August 15
  • Reputation: 80

geschrieben 15. Oktober 2016 - 15:38

Beitrag anzeigenZitat (Sturmovik: 15. Oktober 2016 - 15:19)

Liegt die Datenbank auf der gleichen Maschine, von der auf sie zugegriffen wird?
Derzeit noch ja. Soll aber auf einen Server im lokalen Netzwerk umziehen.

Beitrag anzeigenZitat (Sturmovik: 15. Oktober 2016 - 15:19)

In dem Fall ist Verschlüsselung der Datenbankverbindung eigentlich Quatsch, da nix sichtbar übers Netzwerk geht.
Da ein verschlüsselt arbeitender Server dargestellt werden soll, schafft man das nicht in dem man die Verschlüsselung einfach weglässt.^^

Die von mir zusammengestellte Apache, MariaDB, MySQL, OpenSSL, PHP5, PHP7 Entwicklungsumgebung soll zur Entwicklung für Seiten auf SSL verschlüsselten Servern dienen. Wenn ich da einfach SSL weglasse nur weil es lokal oder im Homenetzwerk läuft ist es einfach nicht authentisch. Außerdem könnten dann beim umziehen eines Projektes durch Verschlüsselung und restriktiv eingestellte configs Probleme auftreten. Deswegen soll Apache und MariaDB, MySQL auch lokal verschlüsselt laufen um sofort etwaige Fehler aufzuzeigen.

Erreicht habe ich dieses Ziel ja bereits bei phpMyAdmin welches bei SSL geschützter Verbindung sehr langsam wird. Woran das liegt gilt es zu ermitteln.

Beitrag anzeigenZitat (Sturmovik: 15. Oktober 2016 - 15:19)

Zweitens: was ist denn da für Hardware drunter?
Ein AMD FX-8350 mit 12GB Speicher.

Beitrag anzeigenZitat (Sturmovik: 15. Oktober 2016 - 15:19)

Wird da AES-Crypto schon nativ unterstützt?
Ich vermute mal nicht.^^ Es ist auch kein Problem unter Apache oder der mysql Console. Nur eben phpMyAdmin wird sehr lahm.
0

#6 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.725
  • Beigetreten: 10. Januar 08
  • Reputation: 415

geschrieben 15. Oktober 2016 - 16:13

Beitrag anzeigenZitat (Gispelmob: 15. Oktober 2016 - 15:38)

Derzeit noch ja. Soll aber auf einen Server im lokalen Netzwerk umziehen.

Da ein verschlüsselt arbeitender Server dargestellt werden soll, schafft man das nicht in dem man die Verschlüsselung einfach weglässt.^^
Die von mir zusammengestellte Apache, MariaDB, MySQL, OpenSSL, PHP5, PHP7 Entwicklungsumgebung soll zur Entwicklung für Seiten auf SSL verschlüsselten Servern dienen. Wenn ich da einfach SSL weglasse nur weil es lokal oder im Homenetzwerk läuft ist es einfach nicht authentisch. Außerdem könnten dann beim umziehen eines Projektes durch Verschlüsselung und restriktiv eingestellte configs Probleme auftreten. Deswegen soll Apache und MariaDB, MySQL auch lokal verschlüsselt laufen um sofort etwaige Fehler aufzuzeigen.

Könnte sein, dass wir uns hier Missverstehen. Die HTTPS-Verbindung zum Webserver will ich dir natürlich nicht ausreden. Das sollte heutzutage selbstverständlich sein.
Ich meine die Verbindung Webserver <-> Datenbank. Wenn das nicht übers Netz geht, dann ist SSL hier nur eine unnötige Bremse. Wenn du natürlich einen dedizierten Datenbankserver hast und der Webserver auf diesen per Netzwerk zugreifen soll, ist das natürlich eine völlig andere Geschichte.

Bei deiner Zusammenstellung macht mich aber eins stutzig: MySQL und MariaDB? Welchen Sinn hat das denn? (Reine Neugier meinerseits)

Zitat

Ein AMD FX-8350 mit 12GB Speicher.

Ok, der sollte die AES-Befehlssätze schon beherrschen.



Nur um nochmal zu unterstreichen, was eine verschlüsselte DB-Verbindung anrichtet:
https://www.percona....mance-overhead/

Dieser Beitrag wurde von Sturmovik bearbeitet: 15. Oktober 2016 - 16:23

«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#7 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 929
  • Beigetreten: 14. August 15
  • Reputation: 80

geschrieben 15. Oktober 2016 - 16:43

Beitrag anzeigenZitat (Sturmovik: 15. Oktober 2016 - 16:13)

Ich meine die Verbindung Webserver <-> Datenbank. Wenn das nicht übers Netz geht, dann ist SSL hier nur eine unnötige Bremse. Wenn du natürlich einen dedizierten Datenbankserver hast und der Webserver auf diesen per Netzwerk zugreifen soll, ist das natürlich eine völlig andere Geschichte.
Momentan sind beide in dem Paket auf dem gleichen Rechner. Ich hatte auch nicht vor das für mich persönlich zu trennen, nur eben die Server auf einen 2. Rechner zu verschieben. Das Paket soll im Gegensatz zu XAMPP schon sicher konfiguriert sein, was für mich auch SSL impliziert.

Beitrag anzeigenZitat (Sturmovik: 15. Oktober 2016 - 16:13)

Bei deiner Zusammenstellung macht mich aber eins stutzig: MySQL und MariaDB? Welchen Sinn hat das denn? (Reine Neugier meinerseits)
Der tiefere Sinn ist, dass XAMPP vor einiger Zeit auf MariaDB umgestellt hat und ich damit nicht zufrieden bin. Deswegen sind in dem Paket beide DBs mit drin. Man kann nun beide nutzen (wenn man die configs entsprechend anpasst) oder nur eine von beiden. Bei PHP hab ich auch Version 5 und 7 drin. Da muss man allerdings wählen, da beides gleichzeitig nur mit 2 verschiedenen Instanzen des Webservers ginge.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0