Puffergröße für I/O ermitteln

Wenn man Daten in eine Datei schreibt tut man dies am besten gepuffert den sonst wird im ungünstigsten Fall für jedes geschriebene byte eine Schreiboperation ausgelöst. Im Puffer werden bytes die in eine Datei geschrieben werden sollen gesammelt und dann in Summe auf die Festplatte geschrieben. Doch auch die Puffergröße hat noch einmal erheblichen Einfluss auf die Schreibperformance der Applikation. Um den optimalen Wert zu ermitteln gibt er hier ein kleines Java Programm das einen Benchmark durchführt um die optimale Puffergröße zu ermitteln.

Continue reading →

HTTP(s) Client Performance von PHP, Go und Java

Möchte man einen Backend Service oder ein Programm schreiben das Inhalte von einer Webseite abruft oder mit einer Webschnittstelle kommuniziert ist häufig die Performance ein wichtiges Kriterium. Den hier werden meist nicht ein, zwei oder drei HTTP(s) Aufrufe abgearbeitet sondern viele hundert oder tausend. So multiplizieren sich einige hundertstel Millisekunden Unterschied bei der Request Abwicklung schnell zu Sekunden oder Minuten.

Um diese Unterschiede zu ermitteln führe ich im folgenden einen Performance Test durch bei dem über eine HTTPS Verbindung eine Webseite n-Mal aufgerufen wird und der entsprechende Client diese auf der Standardausgabe ausgibt.

Continue reading →

SSL Handshake Failure bei Java Clients

Am 2. Juni wurde mit den Ubuntu Sicherheits Updates ein Update für den Apache2 Webserver ausgeliefert das unter anderem dafür sorgt das unsichere “Export Cipher Suites” per default deaktiviert sind. Das sorgt dafür das Java Clients die Java Version 7 oder früher benutzen keine Verbindung zu einem mit SSL gesicherten Webserver aufbauen können.

Siehe Ubuntu Sicherheitsupdate USN-2625-1
Siehe Apache mod_ssl FAQ

Java Clients werfen dann eine Exception wie

java.lang.RuntimeException: Could not generate DH keypair

oder

java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)

Continue reading →