[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

AW: cyrus performance @pop3d



> -----Ursprüngliche Nachricht-----
> Von: Joerg Friedrich [mailto:Joerg.Dieter.Friedrich@uni-konstanz.de]
> 
> Hi!
> 
> > > Ich habe mich mal damit versucht, einige Werte zu optimieren, was
> teils gewisse Besserungen gebracht hatte:
> > > (prefork=3, babysit=1, maxchild erhöht)
> > >
> > > /etc/cyrus.conf (teile daraus)
> > >         pop3            cmd="pop3d -U 30" listen="pop3" prefork=3
> babysit=2 maxchild=100
> > >
> > > Ich habe versucht die Preforking und babysit-werte zu ändern,
> > > aber scheine etwas orientierungslos.
> > >
> 
> Zunächst dazu ein paar Bemerkugen:
> 1. babysit hat nur zwei Zustände: null oder nicht null, zumindest laut
> Manpage,

Hier scheine ich nicht ganz zu verstehen wie der Mechanismus (Prefork im
Zusammenhang mit babysit) funktioniert:

Tatsächlich habe ich mit prefork=20 keine Delays mehr.
Weshalb kann ein "simples" forking so viel Zeit in anspruch nehmen?
(Meine Maschine mit 8000BogoMIPS hat aktuell nur 1% Last!!)
Übrigens ist das delay exakt zwischen dem TCP-handshake und der ersten
Zeile +OK welche der Server meldet.

Der Grund für das Erhöhen meiner "maxchild" war, dass ich an das
Verhalten gewisser SW erinnert wurde, wobei die connections "schlechter"
behandelt wurden, je näher sie an die maxconn hinkamen. Sshd - so denke
ich - dropt dann nämlich willkürlich unregelmässig neue connections,
obwohl man noch nicht alle benutzt hat - bis er schliesslich alle
droppen muss.

Nun sehe ich allerdings nicht ganz, wie das mit babysit läuft:

Ich habe ein pop3s setup, auf dem besagten Server jedoch keine STARTTLS
- sprich keiner benutzt(e im fraglichen Moment) ssl ... ausserdem würden
diese auch über eine andere service-zeile bedient und hätten somit keine
Wirkung auf plain pop3.

DNS: Ich sehe keine Option, diese Lookups zu deaktivieren.
Ich habe zwar einen sehr guten DNS-Zugang der auch reliable
funktioniert.


Prefork=
Sehe ich das richtig: so viele services laufen immer mindestens. Wenn
meine effektive Connectionzahl grösser als prefork ist, hat diese Zahl
keine Wirkung mehr...

Maxchild=
Scheint die maximale Connectionzahl einzuschränken.
Gibt es hier ein statistisches dropping (vor erreichen der maximalen
Zahl?)

Babysit=
Nur zero/non-zero ... scheint einfach ein freies child zu
erhalten/generieren. Scheint im Zusammenhang mit prefork= also Wirkung
zu tragen, wenn connectionzahl grösser prefork ist.
Deaktiviert das also Maxchild komplett?
Die Erwähnte condition "The value of maxchild is ignored if all children
are busy and babysit is active" scheint immer erfüllt zu sein, wenn man
sich in Richtung maxchild bewegt...

:-) THX! Miro



Reply to: