Go · SMTP · Performans testi
Go ile SMTP yük testi
smtp-load-test, SMTP trafiği oluşturmak ve yük altında e-posta gönderiminin davranışını raporlamak için geliştirdiğim Go tabanlı bir komut satırı projesi. Linux e-posta servisleri ve ağ sorunlarını araştırma deneyimimi, kaynak kodu GitHub üzerinden incelenebilen bir uygulamayla bir araya getiriyor.
Proje neyi ölçüyor?
TCP bağlantısının kurulması, e-posta gönderiminin yalnızca bir adımıdır. Araç; bağlantı kurulumu ile HELO, MAIL, RCPT, DATA ve QUIT gibi SMTP adımlarının sürelerini kaydeder. Raporda başarılı ve başarısız gönderim sayıları, kaydedilen sürelerin minimum, ortalama, maksimum ve toplam değerleri ile testin toplam süresi bulunur.
Test yapılandırması
Komut satırı arayüzü, oluşturulacak yük ve hedef sunucu için ayrı ayarlar sunar. Böylece farklı test yapılandırmaları karşılaştırılırken sunucu, bağlantı ve mesaj parametreleri açıkça belirlenebilir.
| Parametreler | İşlev |
|---|---|
workerSize, batchSize, jobCount | Test çalıştırıcısının çalışan, grup ve iş sayısı ayarları. |
smtpServer, smtpPort, helo | Hedef sunucu, port ve SMTP selamlama kimliği. |
senderMail, receiverMail, dataSize | Gönderen, alıcı ve oluşturulan mesaj boyutu. |
sslEnabled, startTLS, authEnabled | Bağlantı güvenliği ve kimlik doğrulama seçenekleri. |
Sonuçların yorumlanması
Kontrollü bir testte başarılı ve başarısız gönderim sayılarını protokol süreleriyle birlikte değerlendirmek gerekir. Her seferinde tek bir yük parametresini değiştirmek, farkları yorumlamayı kolaylaştırır. Sunucudaki CPU, disk ve e-posta kuyruğu gözlemleri, istemci tarafındaki raporun tek başına sağlayamadığı bağlamı sunar.
Uygulama yapısı ve kapsam
Giriş noktası yapılandırmayı okur, SMTP test istemcisini oluşturur, SendTestMails işlevini çalıştırır ve istatistikleri yazdırır. statistics paketi adım sürelerini ve sayaçları toplar. Depo, yük oluşturma ve istemci tarafındaki ölçümlere odaklanır. Sunucu izleme ve iletinin gelen kutusuna teslim edildiğinin doğrulanması, e-posta sistemini değerlendirmenin ayrı adımlarıdır.
Kaynak kodunu inceleyin
Yönettiğiniz bir e-posta sunucusunda test çalıştırmadan önce depodaki güncel uygulamayı ve seçenekleri inceleyebilirsiniz.
İlgili deneyim
Linux e-posta servisleri, Kubernetes, gözlemlenebilirlik ve veritabanı güvenilirliği alanlarındaki çalışmalarımı inceleyebilirsiniz.
DevOps ve SRE deneyimi