ENES UYSAL

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.

Geliştiren: Enes Uysal

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, jobCountTest çalıştırıcısının çalışan, grup ve iş sayısı ayarları.
smtpServer, smtpPort, heloHedef sunucu, port ve SMTP selamlama kimliği.
senderMail, receiverMail, dataSizeGönderen, alıcı ve oluşturulan mesaj boyutu.
sslEnabled, startTLS, authEnabledBağ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.

Linux e-posta servisleri, Kubernetes, gözlemlenebilirlik ve veritabanı güvenilirliği alanlarındaki çalışmalarımı inceleyebilirsiniz.

DevOps ve SRE deneyimi