Tengine açık kaynaklı yeni özellikler: HTTPS işlem gücü nasıl kolayca iki katına çıkarılır?

Alimei's Guide: Nginx'e dayalı olarak geliştirilmiş hafif bir web sunucusu olan Tengine, yüksek trafikli web sitelerinin ihtiyaçları için birçok gelişmiş işlev ve özellik ekledi. Örneğin, Tengine, Nginx'in tüm konfigürasyonlarıyla uyumludur ve bağımsız süreç çerçevesi, sayfa optimizasyonu, uzantı için Lua dilinin entegrasyonu ve performansta büyük bir gelişme gibi birçok pratik işlev ekledi. Alibaba web sitesi çapında HTTPS projesi tarafından oluşturulan yedi katmanlı trafik giriş ağ geçidinin "erişim katmanı" da Tengine'e dayanmaktadır. Şu anda trafiğin% 90'ından fazlası HTTPS'dir. İpek kadar yumuşak 11 sıfır noktalı çift trafik zirvesini nasıl destekler?

Arka plan tanıtımı

Site genelinde HTTPS ortak bir konu olmasına rağmen, neden bunu yapabilen yalnızca birkaç yerel web sitesi var? Sebepler basitçe iki noktada özetlenmiştir: Birincisi, HTTPS kullanımı web sitesi erişim hızını "yavaşlatır" ve ikincisi, sunucu CPU tüketimi artar ve makine maliyeti "pahalı" hale gelir. Oturum çoklama, OCSP Zımbalama, Yanlış Başlatma, dinamik kayıt boyutu, TLS1.3, HSTS, vb. Gibi HTTPS yazılım optimizasyon şemaları da çeşitlilik gösterse de, yazılım seviyesinin nasıl optimize edileceği artan trafik hızını karşılayamaz. CPU Moore Yasası alacakaranlık yıllarına girdi ve özel donanım yükünü azaltma CPU yoğun operasyonları endüstride evrensel bir çözüm haline getirdi.Tengine, web sitesinin HTTPS işlem kapasitesini kolayca iki katına çıkaran HTTPS'yi boşaltmak için Intel QAT hızlandırıcı kartlarını kullanan ilk açık kaynaktır.

Hızlandırma planı

Bu sefer Tengine-2.2.2 açık kaynağının yeni özellikleri şunları içerir: ssl_async asenkron OpenSSL modülünü destekler, TLS1.3'ü destekler, TLS el sıkışma 0-RTT'ye sahiptir, yukarı akış konfigürasyon bloğu, konfigürasyon yönetimini kolaylaştırmak için talimatlar içerir ve ssl_async, donanımla birleştirilebilen asenkron OpenSSL modunu destekler Örneğin, Intel QAT hızlandırıcı kartı, HTTPS için Tengine'ın işlem gücünü ikiye katlayabilen SSL yoğun işlemlerin yükünü azaltır.

Tengine, Intel QAT'ın eşzamansız hızlandırma çözümüne dayanmaktadır. Genel çerçevesi Şekil 1'de gösterilmektedir: Tengine'in ssl_async komutu, OpenSSL + QAT Motoru ve Tengine-2.2.2'nin OpenSSL-1.1.0'a uyarlandığı QAT Sürücüsü Eşzamansız arabirim, Intel tarafından sağlanan motora (QAT motoru) özel anahtar işlemini kaldırır ve motor, QAT sürücüsü aracılığıyla donanımın çalışmasını tamamlar.

İlke tanıtımı

Tengine, asenkron donanım motorları için asenkron olayları, orijinal soket arayüzü asenkron okuma / yazma olayları (Şekil 2'de gösterilmiştir) temelinde genişletir ve asenkron motoru almak için async_fd adlı orijinal bağlantı yapısına yeni bir asenkron kaynak ekler. OpenSSL ile ilgili işlemleri gerçekleştirirken, döndürülen olay fd'yi Tengine'ın eşzamansız olay çerçevesine yükleyin.Donanım ilgili işlemi gerçekleştirmek için algılandığında, ilgili olay sonraki işlemleri gerçekleştirmek için uyandırılacaktır.

Tengine, eşzamansız ssl_asyncQAT hızlandırma modunu etkinleştirdiğinde, istemcinin SSL / TLS talebini aldıktan sonra, özel anahtar işlemini OpenSSL API aracılığıyla QAT donanımına aktarır ve -1 değerini ve karşılık gelen SSLERRORWANT_ASYNC hata kodunu hızlı bir şekilde veya döndürür. Hata koduna göre Tengine, motor tarafından sağlanan eventfd'yi OpenSSL ile ilgili API'ler aracılığıyla alır ve bunu Tengine epoll izleme listesine ekler ve aynı zamanda diğer bağlantı hizmetlerinin daha sonra işlenmesi için CPU kaynaklarını serbest bırakır. Şu anda, QAT motoru, varsayılan olarak QAT donanım kaynaklarını sorgulamak için dahili iş parçacıkları sağlar.QAT donanımı ilgili işlemleri tamamladığında, QAT motoru yukarıdaki eventfd aracılığıyla Tengine'e bildirimler gönderir. Tengine, eşzamansız olayı takip etmek için soket olayına benzer bir işleme mekanizması kullanır İşleme, yani motora tekrar girmeden önce eşzamansız bir hata kodu döndüren API'nin çağrılması ve kaldırma işlemini tamamlamak için ilgili sonuçların kurtarılması. Bu işleme yöntemi, donanım kaynaklarının kullanımını en üst düzeye çıkarır ve sunucunun eşzamanlı işleme yeteneklerini büyük ölçüde geliştirir.

İş akışı Şekil 3'te gösterilmektedir. Tengine, SSL / TLS el sıkışma işlemini OpenSSL API (SSLdohandshake) aracılığıyla başlatır. OpenSSL kitaplığının içinde, özel bir anahtar işlem isteğinin kaldırılması gerektiğinde, karşılık gelen bir eşzamansız iş (eşzamansız iş) oluşturulur ve İlgili işleme motorunu (QAT motoru) doğrudan girin, işleme motoru isteği kabul ettiğinde, mevcut görev OpenSSL eşzamansız kitaplık aracılığıyla askıya alınır ve mevcut çağrı yığını, karşılık gelen eşzamansız hata kodunu arayan Tengine'e döndürmek üzere programlanır. Tengine, göreve karşılık gelen zaman uyumsuz eventfd'yi askıya alır ve ardından diğer işlemleri işler. Eventfd çağrıldığında, SSLdohandshake API'sine tekrar girer.OpenSSL, daha önce askıya alınmış görevi tekrar planlamak için işlevin içindeki durum makinesini kullanır ve mevcut işlemi başarılı olarak işaretlemek için ilgili dönüş değeri arayan kişiye geri dönene kadar mevcut çağrı yığınını tamamlamaya devam eder.

Performans verisi

cpu modeli: Intel (R) Xeon (R) CPU E5-2650 v2 @ 2.60GHz 32 çekirdek

Çekirdek: 3.10

Ağ kartı: 10 Gigabit

OpenSSL sürümü: 1.1.0-f

QAT motor sürümü: v0.5.30

QAT sürücü sürümü: qatmux.l.2.6.0-60

Test senaryosu: Farklı sertifika türleri altında, yerel olarak 10 bayt veri döndürülür

Aynı koşullar altında Tengine, HTTPS işleme yeteneklerini aşağıda gösterildiği gibi karşılaştırmak için QAT donanım hızlandırma ile birlikte ssl_async zaman uyumsuz modunu etkinleştirir.

RSA-RSA-AES128-GCM-SHA256 şifreleme paketini kullanırken Tengine, ssl_asyncQAT hızlandırmasının 8 çekirdekli QPS ile 17.6k'ye ulaşmasını sağlar ve QAT kapatıldığında 32 çekirdekli QPS, aşağıdaki şekilde gösterildiği gibi 29k'ye ulaşabilir:

ECDHE-RSA-AES128-GCM-SHA256 şifreleme paketini kullanırken, Tengine, ssl_asyncQAT hızlandırmanın yalnızca 16 çekirdekli QPS ile 15k'ye ulaşmasını sağlar ve aşağıdaki şekilde gösterildiği gibi, QAT kapatıldığında tüm 32 çekirdekli CPU'lar dolu olduğunda QPS 9.4k'ye ulaşır Göstermek:

ECDHE-ECDSA-AES128-GCM-SHA256 şifreleme paketini (secp384r1) kullanırken, Tengine, ssl_asyncQAT hızlandırmanın yalnızca 8 çekirdekli QPS ile 13k'ye ulaşmasını sağlar ve QAT kapatıldığında, aşağıdaki gibi 32 çekirdekli CPU'ların 11k'ye ulaşmasını gerektirir Resim şunları gösterir:

ECDHE-ECDSA-AES128-GCM-SHA256 şifreleme paketini (prime256v1) kullanırken, Tengine ssl_asyncQAT hızlandırmayı etkinleştirdiğinde, 8 çekirdekli donanım işleme zirvesi 16k'ye ulaşabilir ve QAT kapatıldığında, 32 çekirdekli QPS aşağıdaki şekilde gösterildiği gibi 29k'ye ulaşabilir:

sonuç olarak

Tengine, ssl_asyncQAT hızlandırmayı etkinleştirdiğinde, şifreleme paketi RSA-RSA algoritması kullandığında, HTTPS işlem gücü Tengine'ın hızlandırılmamış sürümünün 3,8 katıdır (8 çekirdekli) ve ECDHE-RSA algoritmasını kullanan HTTPS işlem gücü, Tengine'ın hızlandırılmamış sürümünün (8 çekirdek) 2,65 katıdır. ECDHE-ECDSA (P-384) algoritmasını kullanırken, HTTPS işleme kapasitesi, Tengine'in hızlandırılmamış versiyonunun (16 çekirdek) iki katıdır. Elbette, QAT her derde deva değildir. ECDHE-ECDSA (P-256) şifreleme paketinin 8 çekirdeğini kullanırken, QAT donanım işlem zirvesi yaklaşık 16k'dır. Şu anda, Tengine'ın hızlandırılmamış sürümüyle karşılaştırıldığında, yalnızca% 23'lük bir performans artışı vardır.

Sınırlı alan nedeniyle, ilgili sorularınız olabilir Orijinal metni okumak için https://github.com/alibaba/tengine/issues/1004 tıklayın, Github açık kaynak Tengine-2.2.2'nin yeni özelliklerinin tanıtımı hakkında bilgi edinin ve bizimle tartışın.

Teşekkürler

Tengine QATın eşzamansız hızlandırma çözümüne teknik desteği ve yardımı için Intel® QuickAssist Teknolojisi (QAT) ekibine teşekkürler. Tenginee olan katkıları ve güvenleri için Tengine açık kaynak topluluğuna teşekkürler. Tenginein açık kaynak sürümünün gelecekte daha fazla yeni özellik sağlayacağına inanıyorum. İşlev ve performans açısından Tengine'i maksimize etme çabaları.

İki top kaybı topu düşürdü ve Lippi yedek kulübesinde çöktü! Forvet olarak dövüşmek istedim ama oyuncular güçlü değil
önceki
"Crusaders 2: Death's Deserved" inceleme puanı 9,0 puan Orta Çağ tıbbi sorunu
Sonraki
Mourinho, Manchester United'ın bir daha sınıfın bitmeyeceği konusunda ısrar etti: Saf bir şekilde Manchester United oyuncularının beni öldürmek istemediğine inandım.
Onuncu nesil Honda Accord, 2.0T güce ve 10 vitesli bir şanzımana sahip! Çok fazla vites aldınız mı?
Xingye Taikoo Hui bir yıllığına açılacak ve Şangay başka bir Qiantan "Taikoo Li" ekleyecek mi?
Gerçekten sıkıcı! Bu Doğu Konferansı mı? Zayıf şövalye, Owen'ın enerjisini kaldıramamasına neden olur!
Fox, bir reklamı çekmek için beklenmedik bir şekilde yolu yasadışı bir şekilde kapattı, Changan Ford, gerçekten yeterli!
VAR, Asya Kupası'na ilk kez iki kez katıldı! Japon takımı oyunun galibi olsun
20 yıllık Dünya Kupası'nın en güçlü şampiyonu doğdu: Almanya ve Brezilya'yı yenmek, şampiyonluğu kazanmak ve Arjantin'i eşleştirmek için 3 final
Böylesine sıcak bir günde BYD New Energy Racing, stadyumda yeni bir rekor kırdı ...
2018 Şangay Kitap Fuarı | 50 yıllık öğretmenlik çağına sahip ünlü bir fizik öğretmeni kitap fuarında sihre dönüştü ve "oyun" un ilk olduğunu savundu
Şaşkın! Tylen Lu pes etti, James kenarda tembeldi, Shi Shuai'nin sözleri biraz ilginçti!
Teknoloji 2018'de dünyayı nasıl değiştirecek? 12 Alibaba bilim adamı yıllık teknoloji trendi tahminini yayınladı
Bir seferde sadece 1 kazanın! Japon takımı fazla istikrarlı ve yeni pragmatizm Asya Kupası'nı vuruyor!
To Top