2009-06-29 7 views
0

Meine Frage bezieht sich auf die Verschlüsselungskosten von OpenSSL während des Ladens, und hier ist das Problem: Bei der Arbeit mit SSL über IMAP4 (mit einer Anwendung, die wir schreiben, eine Art von IMAP4 Proxy) Wir holen Nachrichten auf zwei verschiedene Arten: 1. full fetch. 2. partielles Holen (Holen von Chunks). Der erste Teil des partiellen Abrufs und des vollständigen Abrufs sind in Bezug auf die Anwendung fast gleichwertig. Was passiert, wenn wir die Daten zurück zum Client senden (entweder den ganzen Körper oder nur einen Teil davon), bekommen wir durch die SSL-Verschlüsselung lächerliche Antwortzeiten. Wir sehen deutlich, dass je größer die Daten sind, desto mehr Zeit braucht OpenSSL, um sie zu verschlüsseln (linear zur Größe, und voll vs. partiell zeigt es schön. Das Problem ist nicht, dass es mehr Zeit braucht, sondern die absolute Zeit dafür nimmt). Es bringt uns zu einer Situation, in der ein vollständiger Abruf von 80k zu einer Antwortzeit von 7 Sekunden führen kann (im Vergleich zu etwas mehr als 1 Sekunde, wenn kein SSL verwendet wird). Ist jemand jemals auf ein ähnliches Problem gestoßen? Gibt es eine Chance, dass ein solcher Overhead realistisch ist? Hat jemand eine Idee, die Daten zurück auf den Client zu beschleunigen (ohne einen externen Beschleuniger hinzuzufügen)? Danke.OpenSSL-Verschlüsselung dauert sehr lange beim Laden

Antwort

0

Da Sie erwähnen, dass Ihr Produkt ein Proxy ist, den Sie geschrieben haben, würde ich zuerst schauen, ob das Problem mit Nagle's algorithm zusammenhängen könnte. Wenn ich sehe, dass die Leistung der Steckdose durch den Boden fällt, ist dies das erste, was ich überprüfe. Grundsätzlich müssen Sie sicherstellen, dass Sie Daten an den richtigen Stellen in Ihrem Programm schreiben und löschen. Wenn Sie es falsch machen, wird es standardmäßig eine Verzögerung von 0,2 Sekunden geben, bevor die Daten gesendet werden. Diese Verzögerungen addieren sich schnell, insbesondere bei häufigen kleinen Anfragen.

Verwandte Themen