Postfix performansı


11

Ubuntu'da postfix çalıştırılıyor, günde bir sürü posta (~ 1 milyon mesaj) gönderiliyor. yükler son derece yüksektir ancak işlemci ve bellek yükü açısından fazla değildir. Herkes benzer bir durumda ve darboğaz kaldırmak için biliyor musunuz?

Bu sunucudaki tüm postalar giden.

Darboğazın disk olduğunu varsaymalıyım.

Sadece bir güncelleme, iostat şöyle görünüyor:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.12   99.88    0.00    0.00

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00    12.38    0.00    2.48     0.00   118.81    48.00     0.00    0.00   0.00   0.00
sdb               1.49    22.28   72.28   42.57   629.70  1041.58    14.55   135.56  834.31   8.71 100.00

Bu sayılar tek bir diskten beklediğiniz performansa uygun mu?

sdb, postfix'e ayrılmıştır.

Sanırım gelen-> aktif-> ertelenmiş olan kuyruk karıştırma

Sorulardan daha fazla ayrıntı:

Sunucu: 4 GB ram ile dört çekirdekli Xeon (R) CPU E5405 @ 2.00GH

Yük ortalaması: 464.88, 489.11, 483.91, 4 çekirdek. ama bellek kullanımı ve işlemci minimum

16 - 32 arasındaki Postfix örnekleri


400+ yük ile ben bir şey yapıyor sistemleri şaşırttı, eğer 1 sistem üzerinden günde 1 milyon mesaj göndermek eğer, kesinlikle disk IO (Ramdisk, Raid) geliştirmek için tavsiye ve muhtemelen daha kümelenmiş bir seçenek, Ben 400 de sunucunuzun hareketli posta oldukça yavaş yükleyin eminim.
grufftech

@Brian G: Bir yorumu işaretleyebilirsiniz, ancak silebileceğinizi sanmıyorum. Yine de ona katılıyorum.
womble

Yanıtlar:


9

Bu biraz çılgınca gelebilir, ancak şunları yapmalısınız:

  1. Günlük kaydını ihtiyacınız olan minimum değere düşürün. Sistem günlüğü yalnızca posta.err veya daha yüksek bir günlüğü yap.
  2. Daha fazla RAM ekleyin. Evet, Postfix'in buna ihtiyacı yoktur, ancak ekstra RAM, çekirdek için fazladan sayfa önbelleği anlamına gelir.
  3. / Dev / sdb'de hangi dosya sisteminin bulunduğundan bahsetmediniz (bu da biraz önemlidir), ancak kesinlikle değiştirin noatime, bu da yükü en azından biraz azaltmalıdır.
  4. / Var / spool / postfix'inizin ne kadar büyük olduğunu görün. Birkaç konserin altındaysa, onu bir ramdiske taşımayı düşünün.

Kendim daha iyi söyleyemezdim. Ben de 3., sda ve sdb hiçbir bölümleri ile bazı yavaşlama neden olabilir, ya da en azından sistemdeki disklerin verimli kullanımı olabilir fark ettim.
grufftech

Nevermind - geri zekalıyım, sadece bir iostat yerine bir iostat -x gibi görünüyor. benim hatam!
grufftech

Syslog günlüğüne eşzamansız olarak sahip olduğunuz ve (tercihen) farklı iğlerde günlükleri ve makaraya sahip olduğu sürece, kayıt miktarını azaltmaya çalışmak için herhangi bir neden olmamalıdır. Yine de, normal çalışma için ayrıntılı günlük kaydı yapmadığınızdan emin olun.
Rob Chanter

4

Ben "/ var / spool / postfix" için bir RAM disk kullanarak önerenler ile katılmıyorum zorundayım. Bu, tüm posta kuyruğunuzun RAM'de saklanacağı anlamına gelir. Sunucunuz çökerse veya güç kaybederse, kuyruktaki iletiler sonsuza kadar yok olur. Bu, istemci / kullanıcı açısından gerçekten kötüdür, çünkü mesaj teslim için zaten başarıyla kabul edilmiştir. Daha da kötüsü, sunucunuz bir e-postanın geri döndüğünü veya teslim edilemediğini belirten bir bildirim göndermez, çünkü sunucu geri geldiğinde kuyruk boş olacaktır.

Bunun yerine, karşılayabildiğiniz kadar hızlı disk eklerdim; Verilen bilgilerle ne kadar ihtiyacınız olacağını gerçekten tahmin edemiyorum. Yukarıdaki "iostat" çıkışından, "sdb" ye ~ 120 IOPS yaptığınız anlaşılıyor (r / s ve w / s toplamı). Tek bir 15k RPM SCSI veya FC diskin 150 IOPS işleyeceğini makul bir şekilde tahmin edebilirsiniz. 5 15k RPM SCSI disk ve iyi bir RAID denetleyicisi ile başlardım. 1 etkin yedek ile 4 sürücüde RAID-10 olarak ayarlayın. Bunun probleminizi tamamen çözeceğinden emin değilim, ama kesinlikle daha da kötüleşmeyecek.


2

Postfix'i bazı profiler (gprof?) Altında çalıştırın veya günlüklere bakın. Postfix, bekletmenin nerede olduğunu söyleyebilecek birçok zamanlama bilgisi kaydeder. Ortak yerler:

  1. Disk performansı. Sıranız için RAID-10 zamanı gelebilir.
  2. Mesajlarda her türlü ağ ES'si. DNS kara listeleri? SAV?
  3. Taktığınız filtreler ve diğer filtreler.
  4. Ağ üzerinden veya bir işlem için kimlik doğrulama ve UID aramaları (ldap, sql).
  5. proxy kullanmıyorum: yavaş haritalar için (yukarıdaki gibi)

iostat -x -v 3disk kullanımını kontrol etmek gibi bir şey kullanın .
moshen

iostat -x, kesinlikle disk performansı, lol, diskte% 100 Util.
grufftech

Dışarı çıkın ve makineniz bunları alacaksa 4 adet 15k SAS sürücü veya SAS yoksa 4 adet Velociraptor SATA sürücü satın alın. RAID-10 bunları, postfix kuyruğu olarak monte edin. Bunu yapmazsa, Intel SSD'lere bakın, ancak dünyanız o noktada pahalı bir acı olacak.
Bill Weiss

2

Üretimin sabit olduğu varsayılarak günde bir milyon mesaj saniyede yaklaşık 11'dir. Postfix, kendi başına, giriş seviyesi sunucu donanımındakinden daha büyük bir büyüklük sırasını işleyebilmelidir. Bu yüzden sadece postfix çalışmasından veya çok dengesiz dağıtılmış işlem zirvelerinden daha fazlasına sahip olduğunuzdan şüpheleniyorum.

Durumunuz kesinlikle yoğun bir G / Ç bağlantılı sunucuya benziyor. Bu, posta kaybetmeyeceğini garanti etmek için çok sayıda küçük yazı yazması gereken bir MTA ile beklenmelidir.

Her ikisinde de G / Ç'yi ayarlamak için zaman ayırın /var/spool/postfixve /var/log. Meşgul postfix sunucuları için en iyi uygulama, ikisini farklı iğler arasında ayırmak ve eşzamansız günlüğün etkinleştirildiğinden emin olmaktır. Linux'ta bir tire işareti ile posta günlüğünüzün günlük dosyası adını önek olarak ekleyin.

mail.info                              -/var/log/mail.log

veya benzeri.

Amavisd-new kullanıyorsanız, çalışma alanının bir tmpfs dosya sisteminde olduğundan emin olun. Genellikle giyeriz /tmp/vscan/. Bu güvenlidir, ancak amavisd-new, aşağı akış (filtre sonrası) atlama iletiyi kabul edene kadar bir veri sonu yanıtı döndürmez.

Bazı insanlar noatimepostfix biriktirme için montaj seçenekleri önermektedir . Postfix'in dosya sistemi semantiğine bağlı olmasından dolayı bu potansiyel olarak akılsızdır. Bkz. Örneğin http://archives.neohapsis.com/archives/postfix/2006-01/1916.html .


1

Kesinlikle disk alt sisteminize en azından sorunun bir parçası olarak bakılmalıdır gibi görünüyor. Postfix'in dosyaları / var etrafında karıştırması nedeniyle, dosya sistemi düzeyinde performansı artıramayacağınızı görmek için "tweak ext3 dosya sistemi" (en azından noatime ve geri yazma ayarı) için googling öneririm.

Müşteri hedefli e-posta için DNS'yi ve giden SMTP'yi çift görev yapan ve bu tür G / Ç bağlantılarına yakın hiçbir yerde günlük 250.000 ileti (2k-10k / saat) çalıştıran iki sunucu kümem var.


0

Bana bir depolama performans şişe boynu gibi görünüyor.

99,88 iowait sisteminizin depolama alanınızı beklemek için çok zaman harcadığını gösterir.

Bill Weiss ile aynı fikirdeyim. Kuyruk için bir raid10 kurulumuna bakmalısınız.


0

veya ile başla

vmstat 1

moshen tarafından önerilen "iostat 1" de iyidir

istatistiklerinden açıkça daha hızlı disk alt sistemi iyi olurdu. 6-8 15k rpm disklerde raid-10 belki bazı önbellek, gemide birkaç bellek konsolu.

biriktirme dizininizi noatime, nodiratime seçenekleriyle bağlayın. Dosya sisteminizi ayarlamayı veya değiştirmeyi düşünün.


0

Brian

Gerçekten daha hızlı bir disk almanız veya tercihen bir baskın çözümüne geçmeniz gerekiyor. Bu ne tür bir sunucu?

James


dört çekirdekli Xeon (R) CPU E5405 @ 2.00GHz 4 GB ram
Brian G

0

Spam + virüs filtreleme için amavis çalıştırıyorsanız, eşzamanlı amavis işlemlerinin sayısını artırmalısınız. Kurulumunuza göre, postfix master.cf dosyasından smtp-amavis işlemlerinin sayısını ve ayrıca amavis.conf dosyasındaki ilgili ayarı artırmanız gerekebilir.


teşekkürler ama amavis çalışmıyor.
Brian G

0

Kutuda kaç çekirdek var ve gerçek yük nedir? İletilerin gönderildiği gerçek ücret nedir?

Çoğu gibi, ilk düşüncem disk, bu yüzden kontrol edin.

Ancak, yüksek kesme yükü (kötü kart?) Olabileceğinden, ağ kullanımı neden olabilir, bu yüzden bunları kontrol edin. Ben mütevazı bir posta sunucusu için bile, aynı önbellek üzerinde hızlı bir önbellek DNS sunucusu ("bağlı olmayan" kısmi) olması gecikme ve ağ yükünü hafifletmek için yardımcı olduğunu buldum.


yük ortalaması: 464.88, 489.11, 483.91, 4 çekirdek. ancak bellek kullanımı ve işlemci minimumdur.
Brian G

Ahh. Herhangi bir zamanda kaç tane postfix işleminiz var? Belki aynı anda çalışan işlemlerin sayısını azaltmak disk i / o çekişmesini biraz kolaylaştırır. Daha az proks, ancak her biri biraz daha hızlı gidebilir. Bu veya yük kesme değerini makul bir şeyle sınırlamak gibi başka bir Postfix azaltma mekanizması.
Geoff Fritz

16-32 postfix örnekleri.
Brian G

3
4xx yük ortalaması "son derece yüksek" değil, "sunucumun barındırıldığı" :)
Bill Weiss

0

Saniyede 630 okuma ve 1042 yazma yaparak, kesinlikle sisteminizde belleğinizi güçlendirmenizi (işletim sistemini ve ram sürücüsünü daha iyi işlemek için) ve sonra postfix klasörünüzü ramdisk yapmanızı öneririm.

Ayrıca, kendi günlükleri tamamen değilse, posta günlüklerinizi kendi bölümlerine koymanızı öneririz.


0

Bu bir GÇ sorunu değil, bir postfix yapılandırma sorunudur. Sizden aynı anda çok fazla şey yapmasını ve kendiniz için bir darboğaz yaratmasını istiyorsunuz. Check out postfix performans ayarlama benioku ve / veya yardımcı olabiliriz böylece main.cf gönderin.


0

Çok tehlikeli bir diskiniz var gibi görünüyor. Sunucunuz sadece 72 okuma / saniye ve 42 yazma / saniye yapıyor. Seagate 7200 RPM masaüstü HDD'm saniyede 100+ rastgele okuma / yazma isteği yapabilir ve yine de onunla başa çıkabilir.

Makarayı sda'ya monte etmeyi deneyin ve yükün iyileşip iyileşmediğine bakın.

Ancak diske daha fazla para sıçratmadan önce aşağıdakileri yapın:

  1. Qshape etkin, qshape ertelenmiş ve qshape gelenlerini çalıştırın ve her komutun toplamını bize bildirin.

    Ertelenmiş kuyrukta olağandışı çok sayıda posta, posta sunucunuzun spam gönderenlerin spam iletilerini iletmek için kullanılabileceği anlamına gelir (örneğin, postfix'inizin tekrar denenmesine neden olacak varolmayan etki alanına e-posta göndermek).

  2. Posta sunucunuzun kara listede olmadığından emin olun ( http://www.mxtoolbox.com/blacklists.aspx )

  3. DNS yanıt süresini kontrol edin ve Yerel bir DNS önbelleği çalıştırın.

    Posta sunucusu DNS'yi oldukça yoğun kullanır. Do dig somedomain.com mx Run bitti birkaç farklı ana. Genellikle tepki süresi 100 - 400 ms'den az olmalıdır. Daha yüksek yanıt alırsanız DNS'niz iyi performans göstermeyebilir. Farklı DNS deneyin (google'ın 8.8.8.8 veya OpenDNS'sini deneyebilirsiniz: 208.67.222.222)

  4. Ağınızı kontrol edin. (örn. ifconfig) ve kaç hata paketi olduğunu görün. Bağlantınızın doygun veya şekilli olup olmadığını kontrol edin. Posta günlüklerinde çok fazla zaman aşımı olup olmadığını kontrol edin. Tcpdump yapın ve paketlerin kaybolmadığından veya yeniden iletilmediğinden emin olun.

  5. Konsolun yanıt verip vermediğini söyleyebilir misiniz (örneğin, bir komut yazdığınızda, sistem size ne kadar hızlı geri bildirim verir)?

    Genellikle ağ sorunu (örn. DNS) yükün hızla yükselmesine neden olur, ancak sistem yine de yanıt verir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.