httpd-docs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael.Schro...@telekurs.de
Subject Re: German translation perf-tuning.xml
Date Fri, 16 Jan 2004 20:40:18 GMT

To start with, I had several notes and questions
about the English original (which I posted separately).
Thus my review for the German version will likely be
incomplete, as I need responses to these questions
before being able to rate the translation of the
corresponding sections.

> <p>Der Apache 2.0 ist ein universeller Webserver mit einem
> ausgewogenen Ma&szlig; an Flexibilit&auml;t, Portierbarkeit und
> Leistungsf&auml;higkeit. Zwar wurde er nicht speziell f&uuml;r neue
> Benchmark-H&ouml;chstwerte entwickelt, dennoch erweist er sich im
> praktischen Einsatz als ein Hochleistungsserver.</p>

These kinds of "political statements" should be trans-
lated absolutely literal, as if they were part of a
contract or license agreement. Even small deviations
can give a reader the impression that Apache claims
to be what it is not.

I try this section myself:
"Apache 2.0 ist ein Allzweck-Webserver, der entworfen
 wurde, um ein ausgewogenes Maß an Flexibilität,
 Portierbarkeit und Leistungsfähigkeit zu bieten.
 Obwohl Apache 2.0 nicht speziell daraufhin ausgelegt
 wurde, neue Benchmark-Höchstwerte zu erreichen, ist
 er dennoch in der Lage, in vielen praktischen Einsatz-
 fällen eine hohe Performance zu liefern."
('Hochleistungsserver' = 'high performance server' is
exactly _not_ what Apache claims to be, but it still
happens to be quite fast in many real life situations.)

> <p>Im Vergleich mit der Apache-Version 1.3 enth&auml;lt er viele neue erg&auml;nzende

"neue" and "ergänzende" would be a duplicate.
I suggest you rather use "zusätzliche" for these two.

> des Betriebssystem, w&auml;hrend andere die Schaffung eines ausgewogenen
> Verh&auml;ltnisses zwischen Funktionalit&auml;t und Geschwindigkeit erlauben.</p>

Nope, but "..., während es andere dem Administrator
erlauben, _auf_Kosten_von Funktionalität zusätzliche
Geschwindigkeit zu erzielen."

"to trade functionality for speed" isn't "make a
balance between functionality and speed" but "to
reduce functionality in order to increase speed".

<p>Der zentrale Hardware-Aspekt f&uuml;r die Webserver-Leistung ist der RAM-Speicher.

"RAM-Speicher" is a "weißer Schimmel" because the
"M" of "RAM" already means "memory" = "Speicher".

> Ein Webserver sollte niemals Swapping durchf&uuml;hren m&uuml;ssen,

Interestingly enough you didn't translate "swapping"
here. It _is_ a technical term, yet a translation
might be possible:
"Ein Webserver sollte niemals dazu gezwungen sein,
Hauptspeicherinhalte auf langsamere Speichermedien
auslagern zu müssen." (Which would explicitly explain
_why_ this would be a bad idea.)

> die den Benutzer ungeduldig werden l&auml;sst.

Just translate literally and say:
"welcher der Benutzer nicht mehr als 'hinreichend
schnell' empfinden wird."

> Der Benutzer unterbricht dann den Ladevorgang und l&ouml;st ihn erneut aus,

This is a very abstract translation.
Literally it would be
"Der Anwender klickt dann auf 'Stop' und (danach auf)
'Neu laden', wodurch _er_ die Serverbelastung noch
erhöht."

> Sie k&ouml;nnen und m&uuml;ssen

"should" is not "must".
So: "müssen" => "sollten".

> die maximal zu bedienende Anzahl der Clients kontrollieren, damit der Server nicht zu
>  viele Kindprozesse starten muss, die das Swapping verursachen.

It is not the child processes that cause the swapping,
it is the _creation_ of these processes (because each
new child process requires additional RAM, and RAM is
limited by the available hardware).

Literally: "Sie können - und sollten - die Einstellung
der Direktive <directive>MaxClients</directive> so
wählen, daß Ihr Server nicht so viele Kindprozesse
startet, daß er (dadurch) beginnt, zu swappen."
(note that I _don't_ translate "swap" here.)

> Ermitteln Sie &uuml;ber die Prozessliste oder ein Programm wie <code>top</code>

"oder ein Programm" => "mit Hilfe eines Programms". (You
won't get easy access to the process list without one.)

> und dividieren Sie diesen Wert durch die verf&uuml;gbare RAM-Gr&ouml;&szlig;e
> (ber&uuml;cksichtigen Sie dabei auch andere Prozesse).</p>

Nope, but just the opposite.

"Divide into" is the inverse to "divide by".
There is no literal translation for this in German
(it would be something like
     "...und berechnen Sie, wie oft diese Größe in
      den verfügbaren RAM hinein paßt (wobei Sie
      etwas Platz für andere Prozesse übrig lassen
      sollten)."
) so you have to reorder this line:
     "...und teilen Sie die Größe des verfügbaren
      RAM durch diesen Wert (wobei...".

> und gen&uuml;gend Festplatten.

The _number_ of hard disks is of less importance;
mostly, it is the response behaviour (time for head
positioning, transfer rate) that counts.

Thus: "genügend" => "hinreichend schnelle".

> Fr&uuml;here Solaris 8-Versionen

"frühere" => "frühe".
(A release doesn't vanish when the next release it out;
one may consider it outdated, but for practical reasons
others won't, and Apache doesn't enforce the use of the
most recent OS version, for good reasons...)

> <p>Vor der Apache-Version 1.3, war die

Which purpose does this comma serve?

> M&uuml;ssen in den Protokolldateien Adressen in Hostnamen aufgel&ouml;st werden,

You often try to avoid direct speech in your translation,
while the Apache manual often uses this as to directly
address the reader to actively do something.

I would write literally:
"Falls Sie in Ihren Protokolldateien eine Auflösung von
IP-Adressen in Hostnamen benötigen, ...".

> dann benutzen Sie das Programm <a href="../programs/logresolve.html"><code>logresolve</code>
> </a>, das Bestandteil der Apache-Distribution und eines der zahlreichen
> Protokollprogramme ist, die zur Verf&uuml;gung stehen.</p>

Your translation of "log reporting" lacks the "reporting"
part, and the end of the sentence wasn't too elegant in
English already.

I would translate this to
"dann verwenden Sie _dafür_ (besser) das Programm 'logresolve'
der Apache-Distribution, eines der zahlreichen verfügbaren
Programme zur _Auswertung_ von Protokolldateien."

> <p>Werden DNS-Namen nur in einigen CGI-Skripten benutzt,
> sollte der <code>gethostbyname</code>-Aufruf in dem entsprechenden
> CGI-Skript benutzt werden.</p>

Literally:
"Aber abgesehen von dieser Möglichkeit: Falls Sie DNS-Namen
nur in einigen wenigen CGI-Anwendungen benötigen, sollten
Sie in Erwägung ziehen, den <code>gethostbyname</code>-Aufruf
(nur) in denjenigen CGIs durchzuführen, die ihn benötigen."

The problem might be that some of these CGIs could be closed
source and won't allow the admin to change their behaviour.

> <p>Ist irgendwo im URL-Raum die Anweisung <code>Options FollowSymLinks</code>

The exact opposite is true, and this is a very important point.
You cannot just join two statements with opposite truth values
into one sentence the way you tried to (because you misunder-
stood).

Literally:
"Überall dort innerhalb Ihres URL-Raums, wo Sie
a) die Option 'FollowSymLinks'       _nicht_ gesetzt oder
b) die Option 'SymLinksIfOwnerMatch'         gesetzt
haben, wird Apache zusätzliche Systemaufrufe benötigen, um
eine Prüfung _auf_ (die Verwendung von) symbolic links durch-
zuführen."

> Die Ergebnisse dieser Aufrufe werden nicht zwischengespeichert und werden daher f&uuml;r
jede
>  Anfrage durchgef&uuml;hrt.

You cannot "durchführen" an "Ergebnis".
("they" refers to the lstat() calls, not to their results.)

Literally:
"Die Ergebnisse dieser Aufrufe werden nicht zwischengespeichert;
deshalb sind letztere (diese Aufrufe) bei jeder weiteren Anfor-
derung erneut erforderlich."

> versucht der Apache, die Datei <code>.htaccess</code> f&uuml;r jede
> Komponente des Dateinamens zu &ouml;ffnen.

Not exactly. It isn't always the same .htaccess file that
Apache attempts to open - see example below.

So this should be:
"versucht der Apache für jede Komponente des Dateinamens,
eine _entsprechende_ (d. h. in dem Verzeichnis des bis
dahin gebildeten Pfadnamens liegende) .htaccess-Datei zu
öffnen."

> Die erforderlichen Ma&szlig;nahmen

Nope, but "Die Lösung des Problems".

> Allerdings wiegen die Vorteile der Content-Negotiation in der Praxis die
> Leistungseinbu&szlig;en auf.

Even more than that - "outweight" is more than "equals".

Thus: "Allerdings überwiegen in der Praxis die Vorteile
der Content Negotiation gegenüber den Leistungseinbußen."
(Meaning: "In this aspect it is unlikely that you want
to trade functionality for performance.")

>  In einer Situation kann der Server beschleunigt werden.

Literally: "Aber es gibt eine Situation, in welcher der
Server (tatsächlich) beschleunigt werden kann (ohne dabei
auf Funktionalität verzichten zu müssen)."

> Anstatt Jokerzeichen wie</p>

Please don't translate the technical term "wildcard".

> <p>zu benutzen, kann eine vollst&auml;ndige Optionsliste verwendet werden:</p>

"kann ... benutzt werden" => "sollten Sie ... benutzen".

> DirectoryIndex index.cgi index.pl index.shtml index.html
> <p>An erster Stelle in der Liste steht der h&auml;ufigste Fall.</p>

Nope: ", wobei Sie den häufigsten Fall an erster Stelle
angeben sollten." (Because this list will obviously be
parsed and evaluated sequentially, and the more likely
the first entry is to fit, the less Apache has to bother
about the other entries. In short: "_You_ have to know
what you are doing in your site - noone else will.")

> <p>Auch das explizite Anlegen einer <code>type-map</code>-Datei erm&ouml;glicht
> bessere Leistungen als die Verwendung von <code>MultiViews</code>,

Literally: "Beachten Sie auch, daß das explizite Anlegen..."

> <p>Ist die Content-Negotiation erforderlich, sollten

Literally: "Falls Ihre Site (unbedingt) Content Negotiation
benötigt, ...".

> <p>In Situationen, in denen der Apache 2.0 auf den Inhalt einer auszuliefernden
Datei schauen

"auf den Inhalt... schauen" => "den Inhalt... betrachten"

> nimmt er normalerweise eine Speicherzuordnung f&uuml;r die Datei vor,

Nope. "memory mapping" is more than just memory allocation.
I suggest translating it to "Speicherabbildung (des Inhalts)"
because the content will be read into this memory and kept
there permanently (to avoid further disk access for this file,
which is the reason why we want to do this in the first place
I guess).

> <p>Bei einigen Betriebssystem passt sich <code>mmap</code> nicht so
gut wie <code>read(2)</code> an,

I suggest "scale" to treat as a technical term here.
Maybe you should write
"Bei einigen Betriebssystemen ist <code>mmap</code> nicht
so gut skalierbar bei wachsender Anzahl von CPUs wie
<code>read(2)</code>."

> in einem eingebundenen NFS-Dateisystem

"mount" is a technical term for sure.
I would rather not translate it, although I am not sure
about any elegant way of using it here.

> kann es zu einem Busfehler kommen, wenn das n&auml;chste Mal versucht wird,
> auf den Inhalt der zugeordneten Datei zuzugreifen.</p>

You always write that so impersonal, omitting the subject.
Literally: "kann Ihr Prozeß einen Busfehler erzeugen,
wenn _er_ das nächste Mal versucht, auf ... zuzugreifen."

> (beispielsweise bei statischem Dateiinhalt),

Literally: "beispielsweise bei der Auslieferung des Inhalts
statischer Dateien".

> <p>Bei manchen Betriebssystem ist die <code>sendfile</code>-Unterst&uuml;tzung
> fehlerhaft, was vom build-System nicht erkannt wird,

Nope: "wird" => "wurde".
(The build system seems to try to detect this, but Apache
cannot guarantee that this detection will work perfectly
on each and every platform.)

> insbesondere, wenn die Bin&auml;rdateien

I would prefer "(ausführbare) Programmdateien", as we talk
about the binaries that are the result of the Apache build
process. ("Binaries" is a technical term here as well.)

> <code>sendfile</code>-Unterst&uuml;tzung verschoben wurden.</p>

I would prefer to think of "move" as "Umzug" (it does not
imply these files were deleted on the original machine),
so this might be something like "übernommen wurden".

> <p>Bei eingebundenen NFS-Dateien

Please don't translate the technical term "mount".

> <p>Vor der Apache-Version 1.3 hatten die
> <directive module="prefork">MinSpareServers</directive>-,
> <directive module="prefork">MaxSpareServers</directive>- und
> <directive module="mpm_common">StartServers</directive>-Einstellungen

More fluent German: "...hatten die Einstellungen der
Direktiven...".

> drastische Auswirkungen auf die Ergebnisse von Vergleichstests.

I would consider "benchmark" a technical term and rather
not translate it - but "Vergleichstest" might be okay.

>  Insbesondere ben&ouml;tigte der Apache eine "Anfahrzeit", um eine ausreichende
>  Anzahl von Kindprozessen zu erreichen.

The last part of this line seems to be missing.
Append: ", ...um die anfallende Last zu bewältigen".

>  Nach der Initialisierung der
> <directive module="mpm_common">StartServers</directive>-Prozesse,

Nope. But this is a tricky way of describing things
in English...
"StartServers" is used as an integer value here,
because that is the semantics of the directive.

So just omit the hyphen, and then look at the line:
Can a German reader understand what you wanted to
tell him? ("Anzahl der ...")
Or do you need to rewrite the whole line?

> Mit der Apache-Version 1.3 wurde der Sekundentakt aufgegeben.

I would translate "relax" as "aufgeweicht" or
something like that. (The rule still applies,
just not so unconditionally as before.)

> <p>Das scheint so durchdacht zu sein,

Nope. "to be responsive" (= to show a response time
behaviour of) isn't literally translatable to German.

Thus I try to rewrite this line:
"Das Antwortverhalten dieses Verfahrens scheint so
(hinreichend?) gut zu sein, daß...",

> Die Ausgabe von <module>mod_status</module> kann hier als Orientierung dienen.

The "von" is overloaded and a bit misleading here.

I would prefer to use plural here ("die Ausgaben")
because that would make clear that you don't mean
"to output mod_status" but "some output created by
mod_status".

> Liegt der Wert sehr niedrig, beispielsweise bei <code>30</code>,
> dann sollte er deutlich erh&ouml;ht werden.

Literally: "dann werden Sie ihn möglicherweise
deutlich erhöhen wollen."
This document doesn't claim the value of 30 to be
wrong - it only makes you think twice about it.

> oder einer &auml;lteren Version von Solaris

Älter als was? Literally: "einer alten Version".

> Die Voreinstellung f&uuml;r <directive module="core">KeepAliveTimeout</directive>
> mit <code>15</code> Sekunden, versucht diesen Effekt zu mildern.

I would like to have the comma after "versucht",
not where it is now.

> Hier muss zwischen  Netzwerkbandbreite Serverressourcen abgewogen werden.

An "und" is missing here between the two nouns.

> Beim Aufbau des Apache

I would likely translate "build" here as
"Übersetzung" (des Quelltextes), although it is
a bit more than that. But this is the thing we
are talking about in the sections to follow.

> F&uuml;r die g&auml;ngigen Unix-Systeme

I guess this should be "allgemeine", just not
restricted in general, while Apache cannot
guarantee this would apply for each *NIX type.

> Jeder Thread bedient eine Verbindung.

You are missing the point:
"Jeder Thread bedient gleichzeitig (= zu einem
bestimmten Zeitpunkt) (maximal) eine Verbindung."

> Jeder Prozess bedient eine Verbindung.

Same as above.

> mit wenig M&ouml;glichkeiten

=> "mit schlechter Unterstützung"

> <p>Da die Speicherauslastung ein wichtiger Punkt f&uuml;r die Leistungsf&auml;higkeit

Suggestion: "Punkt" => "Aspekt".

> ist, sollten eigentlich nicht ben&ouml;tigte Module  eliminiert werden.

Literally: "Sollten Sie bestrebt sein, aktuell nicht
benutzte Module zu eliminieren."

> f&uuml;r dieses Modul als Kommentar gekennzeichnet werden.

I guess "auskommentiert" would be common sense here.

> Das Entfernen von Modulen kann so experimentell durchgef&uuml;hrt werden,
> indem &uuml;berpr&uuml;ft wird, ob die Site anschlie&szlig;end noch funktioniert.</p>

Literally: "Dies erlaubt Ihnen, mit dem Entfernen von
Modulen zu experimentieren und zu kontrollieren, ob
Ihre Seite ohne diese Module (immer) noch funktioniert."
(Without having to recompile Apache completely.)

> <p>Wurden Module dagegen statisch in den bin&auml;ren Apache-Server
> eingebunden, muss der Server erneut kompiliert werden, wenn unerw&uuml;nschte
> Module entfernt wurden.</p>

Just the opposite:
"...wenn Sie unerwünschte Module entfernen wollen."
(Even removing them requires a recompilation if they
are no DSOs!)

> <p>In diesem Zusammenhang stellt sich nat&uuml;rlich die Frage, welche Module
> &uuml;berhaupt ben&ouml;tigt werden.

"...und welche nicht." (There is no need to omit that.)

> den eine Website ist auch ohne Fehlerprotokollierung funktionsf&auml;hig.

You mean "denn" instead of "den"?
If so, I'd prefer "da eine Website auch ... ist."

> Allerdings ist dazu nicht zu raten.</p>

Literally: "Dies wird allerdings nicht empfohlen."
(not recommmended by the author of this document...)

> <title>Kernoperationen</title>

"Atomic operation" is a technical term; the German
translation would be "atomare Operationen" (meaning
"unteilbare Operationen").

> benutzen das Kern-API

See above.

> Dieses API stellt Kernoperationen

See above.

> mit denen eine einfache Thread-Synchronisation m&ouml;glich ist.</p>

Literally:
"Die für eine einfache Thread-Synchronisation ver-
wendet werden können."

> CPU-Modellen zu gew&auml;hrleisten, denen eine solche Anweisung fehlt.

Literally: "denen solche Anweisungen fehlen."

> kann eine schnellere Kernimplementierung ausgew&auml;hlt werden.

See above.
(Uh, this might be tricky... something like:
"können Sie zur Übersetzungszeit eine schnellere
Implementierung für die atomaren Operationen aus-
wählen, indem Sie...")

> <p>Die Option <code>--enable-nonportable-atomics</code> spielt f&uuml;r
> folgende Betriebssysteme eine Rolle:</p>

I would literally use "ist relevant für".

> APR unter Solaris/SPARC Mutex-basierte Kernoperationen.

"Kernoperationen" => "atomare Operationen".

> sind die Kernoperationen

(I won't repeat the same correction from here on.)

> (je nach Betriebssystem) sowie mehrerer zus&auml;tzliche Aufrufe

Typo: "mehrerer" => "mehrere"

> <p>Dieser Abschnitt wurde noch nicht bez&uuml;glich der
> &Auml;nderungen des Apache HTTP-Servers mit der Version 2.0
> aktualisiert. Die Angaben k&ouml;nnen aber m&uuml;ssen nicht mehr
> alle g&uuml;ltig sein.</p>

Literally:
"Dieser Abschnitt wurde bezüglich der in Version 2.0
des Apache-HTTP-Servers durchgeführten Änderungen
noch nicht vollständig aktualisiert. Ein Teil der
(vorliegenden) Information mag weiterhin relevant
sein, aber gehen Sie vorsichtig damit um."

> wobei die nicht besch&auml;ftigten Prozesse

"die" => "alle". (To make the point clearer.)

> Eine naive Implementierung kann folgenderma&szlig;en ausschauen

"Eine naive Implementierung sieht etwa folgendermaßen aus"

> sie dienen lediglich der Anschauung):</p>

"Anschauung" => "Veranschaulichung"

> <p>Bei dieser naiven Implementierung gibt es ein ernstes Problem.

Where has the "starvation" part gone?

I don't have any literal translation myself, so
I try to translate what I think the original
document was trying to say:

"Bei dieser naiven Implementierung besteht die
ernsthafte Gefahr, daß sich der Server in nutzlosen
(unproduktiven?) Berechnungen erschöpft."

> wenn sie zwischen Anfragen liegen.

Um... again it isn't easy to find a literal translation.
Maybe "wenn sie gerade keine Anfrage bearbeiten."
(Sondern eben darauf warten, die nächste Anfrage zu
bekommen - und dieses Warten effizient zu gestalten,
ohne Ressourcen zu verpulvern, ist genau das Problem.)

> h&auml;ngt vom Betriebssystem und Zeitaspekten ab).

"timing" isn't the same as "time".
It might be best to not translate this word.

> Sie betreten alle die Schleife und versuchen die Verbindung zu akzeptieren

I would prefer "Jeder von ihnen..."
(as this would be the opposite of "Aber nur einer".)

> Dadurch werden diese Kindprozesse daran gehindert, Anfragen von diesem
> einen und keinem der anderen Socket zu bedienen.

This line doesn't make any sense.
"lock into" ist not the same as "prevent from", it is
rather the opposite:
"Dieses blockiert diese Kindprozesse tatsächlich derartig,
daß sie nur noch Anforderungen von diesem einen Socket
und keinem (der vielen) anderen bedienen können."
(Because they're locking depends on the next request to
arrive at this port - they won't wake up before that no
matter what, I guess.)

> Diese Problem wurde

Typo: "Diese" => "Dieses"

> Es bieten sich mindestens zwei L&ouml;sungen an.</p>

Literally: "Es existieren mindestens zwei Lösungen."

> Bei zehn unbesch&auml;ftigten Kindprozessen f&uuml;r <code>select</code>
> und einer eingehenden Verbindung, werden neun Prozesse aktiviert.
> Sie versuchen die Verbindung zu akzeptieren (<code>accept</code>).
> Das schl&auml;gt fehl und sie stehen wieder bei <code>select</code>,
ohne
> etwas zu verrichten. Zwischenzeitlich hat keiner dieser neun Prozesse
> Anfragen, die &uuml;ber andere Sockets eingehen, bedient.

You should not change the structure of the sentences
for this paragraph. Translate it absolutely literally,
or else you lose the dependencies of the statements.

> implementieren eine wechselseitige Ausschlusssemaphore.

I would prefer "eine wechselseitig ausschließende
Semaphore", despite this English version which said
"mutual exclusion" instead of "mutual exclusive".

> Nur ein Kindprozesse kann jeweils den Mutex besitzen.

Insert "zu einem gegebenen Zeitpunkt" after "Mutex".

> F&uuml;r die Implementierung der Mutexe gibt es mehrere Auswahlm&ouml;glichkeiten.

Rather: "stehen mehrere Möglichkeiten zur Verfügung."

> Bei einigen Architekturen wurde keine Auswahl getroffen,

This might be the literal translation, yet it doesn't
make too much sense. (And the English version doesn't
either IMHO; I'll post a separate question about this.)

> der Apache beendet wird, ohne das die Semaphore vorher geleert wird

I would prefer "zurückgesetzt".

> Zum anderen l&auml;sst das Semaphoren-API Denial-of-Service-Attacken durch
> CGI-Skripte zu,

I would prefer "ermöglicht".

> die unter der gleichen <code>uid</code> wie der Webserver ausgef&uuml;hrt

"uid" is just an abbreviation for "user id" (Benutzer-
kennung) and need not be marked up in <code>...</code>.

> Aus diesen Gr&uuml;nden wird diese Methoden au&szlig;er von IRIX
> (wo die beiden zuvor genannten bei den meisten IRIX-Rechnern
> unverh&auml;ltnism&auml;&szlig;ig aufw&auml;ndig sind) von keiner
> anderen Architektur benutzt.</p>

Replace "von" by "auf". (We are talking about what
is used by Apache, not "by the operating system").

> Segmentfehler verursacht, was zum Absturz des Webservers f&uuml;hrt.</p>

"hang" is not "crash" - unfortunately "hang" is less
easy to detect, locks ressources and whatnot.

> dann kann es sinnvoll sein, die APR entsprechend zu erg&auml;nzen.</p>

Literally:
"dann könnte es sinnvoll sein, die APR um den ent-
sprechenden Code zu erweitern."

> nur eine bestimmte Anzahl von Prozessen zugelassen wird.

"zugelassen" => "hinein gelassen" (in die Schleife?).

> Dies ist ein Feld f&uuml;r zuk&uuml;nftige Bem&uuml;hungen,

Insert "mögliches" before "Feld".

> da parallele Webserver nicht die Norm sind.</p>

Insert "hochgradig" after "da".

> <p>Im Idealfall sollten die Server ohne mehrfache
> <directive module="mpm_common">Listen</directive>-Anweisungen
> auskommen, wenn gute Leistungen im Vordergrund stehen.

Nope, but: "Idealerweise sollten Sie auf die Verwendung
mehrfacher 'Listen'-Anweisungen verzichten, wenn...".

> Bei der Art und Weise, wie die meisten TCP-Stacks implementiert sind,
> aktiviert der Serverkern aber alle in <code>accept</code> blockierten Prozesse,

Where did you get that "aber" from?
You sound like you want to contradict the previous line,
while you are actually explaining it.
(You might even add some affirmative "nämlich" there.)

> im Serverkern zirkuliert

Rather "Betriebssystemkernel" (or "kernel").

> und deaktiviert wird, wenn keine Verbindung anliegt.

Literally: "und sich selbst wieder 'schlafen legen',
wenn sie bemerken, daß für sie keine (zu bearbeitende)
Verbindung vorliegt." (The initiative to 'sleep' comes
from the child process itself, not some outside magic.)

> Verhalten f&uuml;hren, wie die nicht blockierende L&ouml;sung bei mehreren Sockets.</p>

Remove the comma (what follows is no complete sentence).

> <p>Es hat sich herausgestellt, dass viele Systeme sich besser verhalten,

I suggest "besser" => "gutmütiger"
(i. e. less vulnerable to extreme situations).

> Dies entspricht in der Tat fast in allen F&auml;llen dem Standard.

Welchem Standard? I am not perfectly sure but I guess
     "So this is actually the default in almost all cases."
should be
     "So this is actually the default behaviour
     _of_ _Apache_ in almost all cases."

> zu einer Abnahme der Anfragen pro Sekunde 3% gegen&uuml;ber

Insert "von weniger als" before "3".

> M&ouml;glicherweise entstehen diese Wartezeiten durch lange Transportwege

I don't think this is correct. "to be a wash" looks as if
this were some idiom, yet my dictionary doesn't know about
it. "long haul lines" might rather indicate the attributes
of these lines than the distance they actually cover.

So from the context I would guess that this line wanted to
say: "Bei DFÜ-Verbindungen ist diese Verzögerung höchst-
wahrscheinlich vernachlässigbar, also lediglich in (schnel-
len) LANs (tatsächlich) ein Problem."
(If you have to wait several seconds for a transmission you
don't care for 0.1 sec latency - if you wait for just tenths
of seconds then another tenth might actually be a nuisance
if that happens millions of times.)

> Die Serialisierung f&uuml;r einzelne Sockets kann mit der Definition
> <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code>
> &uuml;berschrieben werden.</p>

Literally:
"Wenn Sie die Serialisierung für (den Betrieb mit) nur ein(em)
Socket außer Kraft setzen (überschreiben) wollen, können Sie
(die symbolische Konstante) SINGLE_LISTEN_UNSERIALIZED_ACCEPT
definieren; in diesem Fall werden Server mit nur einem Socket
(ihre mutex-Aufrufe?) nicht serialisieren."

> <title>Schleichender Verbindungsabbau</title>

Sounds a bit awkward. Yet, I don't see too many good alter-
natives. Maybe "vorsichtig" oder "zögernd"...

> <p>Wie in dem Beitrag
> <a href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt">
> draft-ietf-http-connection-00.txt</a> Abschnitt 8 er&ouml;rtert wird,

More fluent German: "Wie in Abschnitt 8 des Beitrags...".

> (denn eine TCP-Verbindung ist bidirektional, wobei

Literally: "(bedenken Sie, daß ... ist, wobei)

> vom Apache wird sie aber seit der Version 1.2 ber&uuml;cksichtigt.</p>

Literally:
"berücksichtigt" => "korrekt implementiert"

> <p>Als diese Eigenschaft dem Apache hinzugef&uuml;gt wurde, kam es infolge
>  einer gewissen Kurzsichtigkeit bei verschiedenen Unix-Varianten zu einer Reihe
> von Problemen.

This wording makes it ambiguous where the "short-
sightedness" had happened - in Apache or in Unix.
(As I read this paragraph it happened in Apache 1.2
and was fixed later.)

Literally:
"Als diese Fähigkeit in Apache eingebaut wurde, sorgte
sie aufgrund einer Kurzsichtigkeit (bei der gewählten
Implementierung) für eine Reihe von Problemen auf ver-
schiedenen Unix-Versionen.

> Die TCP-Spezifikation legt nicht fest, dass der Status
> <code>FIN_WAIT_2</code> ein Zeitlimit hat, sie verbietet
> es aber auch nicht.

I try a more liberal wording here:
"Die TCP-Spezifikation verlangt nicht, daß der Zustand
FIN_WAIT_2 nur zeitlich begrenzt existieren darf, sie
schließt dies jedoch auch nicht aus."

> Bei Systemen ohne Zeitlimit verursachte der Apache 1.2 ein ewiges H&auml;ngen vieler
> Sockets im <code>FIN_WAIT_2</code>-Status.

Maybe "Zeitlimit" => "timeout-Mechanismus"?

> F&uuml;r F&auml;lle, in denen der Hersteller keine Patches entwickelt hat (wie
f&uuml;r
>  SunOS4, auch wenn Eigent&uuml;mer einer Source-Lizenz sich selbst helfen k&ouml;nnen)
> soll diese Eigenschaft deaktiviert werden.</p>

Literally:
"Bei Fällen, in denen der Hersteller nie (entsprechende)
Patches freigegeben hat (beispielsweise SunOS4 - wobei
Leute mit einer Source-Lizenz die entsprechenden Patches
selbst durchführen können) haben wir uns entschieden,
dieses Feature abzuschalten (zu deaktivieren)."

> <p>Dies kann zum einen mit der Option <code>SO_LINGER</code> geschehen.

Literally:
"Es gibt zwei Möglichkeiten, dies zu bewirken.
Eine davon ist die (Verwendung der) Socket-Option SO_LINGER."

> Leider wurde sie f&uuml;r die meisten TCP/IP-Stacks niemals korrekt implementiert.

Literally:
"Aber wie das Schicksal so spielt, wurde sie bei den meisten
TCP/IP-Stacks niemals korrekt implementiert."

>  Aber selbst bei Stacks mit einer korrekten Implementierung (z. B. Linux 2.0.31) erweist
> sich dieses Verfahren als aufw&auml;ndiger (CPU-Zeit) als die folgende L&ouml;sung.</p>

Remove "Aber", and make "folgende" => "nachfolgend beschriebene".

> <p>In den meisten F&auml;llen findet sich diese Apache-Implementierung

I am not perfectly sure about the literal translation of
"for the most part", but I suspect it would be "zum größten Teil".

> Da HTTP/1.1 immer mehr vorherrscht und alle Pipeline-Verbindungen dauerhaft sind,

I suggest "Mit der zunehmenden Verbreitung von HTTP/1.1 und
der (damit verbundenen) Persistenz aller Verbindungen"

> amortisiert sich dieser Aufwand nach mehreren Anfragen.

Rather: "... mit zunehmender Menge von Anfragen"
("...pro Verbindung" - das ist es ja, was persistente Verbin-
dungen vom alten HTTP/1.0 unterscheidet: Mehrere Anfragen über
dieselbe Verbindung).

>  Wer das Risiko liebt, kann <code>NO_LINGCLOSE</code> definieren, um diese
Eigenschaft
> zu deaktivieren, davon ist aber grunds&auml;tzlich abzuraten.

Literally:
"Wenn Sie mit dem Feuer spielen und dieses Feature deaktieren
wollen, können Sie (die Konstante) NO_LINGCLOSE definieren, aber
davon wird grundsätzlich abgeraten.

> Je mehr die HTTP/1.1-Verbindungen zum Standard werden,
> um so unverzichtbarer wird <code>lingering_close</code>

Literally:
"Insbesondere mit zunehmendem Einsatz persistenter Verbindungen
gemäß HTTP/1.1" (they already are a "standard", just not "in use")
"wird die Verwendung von lingering_close zu einer absoluten
Notwendigkeit werden".

> uns sollten unterst&uuml;tzt werden).</p>

Typo: "uns" => "und".
(Maybe more explicitly: "und sollten daher...".

> <p>Die Apache-Prozesse und Kindprozesse

Literally:
"Apaches Eltern- und Kindprozesse"
(child processes are Apache processes as well)

> Es sollte idealerweise im gemeinsam genutzten Speicher implementiert werden.

"Es" => "Dieses".
(And "shared memory" seems to be a technical term, so I
am not sure whether to translate this at all. Probably not.)

> Bei den Betriebssystemen, zu denen Zugang besteht, oder die zugewiesene Ports haben,

Uh. This looks really confused, although I am not absolutely
sure about the meaning of the English version either.

(I guess this would be) literally:
"Für diejenigen Betriebssysteme, zu denen wir selbst entweder
Zugang haben oder (für die) uns eine detaillierte Portierung
vorliegt". (I'll post a question about this separately.)

> wird es normalerweise im gemeinsam genutzten Speicher implementiert.

See above - it is probably better to not translate "shared memory".

> Bei den &uuml;brigen wird eine Datei auf der Festplatte verwendet.

"defaults" is missing; insert "standardmäßig" after "wird".

> Eine solche Datei ist nicht nur langsam, sie ist auch unzuverl&auml;ssiger.

See my corresponding question about the original version.

> Mit ihnen (und den Definitionen <code>HAVE_MMAP</code> oder
> <code>HAVE_SHMGET</code>) wird der vorhandene Code f&uuml;r
> den gemeinsam genutzten Speicher aktiviert.

And how does that exactly work?

Literally:
"Die Definition einer dieser beiden Konstanten (sowie des
entsprechenden ihrer beiden Gegenstücke HAVE_MMAP bzw.
HAVE_SHMGET) bewirkt die Aktivierung des mitgelieferten
Shared-Memory-Codes.
(You need to #define a pair of corresponding constants...)

> Besitzt das System einen anderen Typ gemeinsam genutzten Speichers,
> muss die Datei <code>src/main/http_main.c</code> ge&ouml;ffnet und die
erforderlichen
> Hooks f&uuml;r Apache hinzugef&uuml;gt werden.</p>

Literally:
"Besitzt Ihr System einen andern Typ von Shared Memory,
dann müssen Sie die Datei http_main.c bearbeiten und die
entsprechenden Hooks hinzufügen, um ihn in Apache verwen-
den zu können."

> <note>Zur Entwicklung: Der Linux-Port des Apache...

I would write this as:
"Historische Anmerkung: Die Portierung von Apache nach
Linux..." (I have read "der Port" in German, but I always
find it confusing when talking about TCP/IP ports as well.)

>  verwendet  erst seit der Version 1.2 den gemeinsam genutzten Speicher. Diese
> Nachl&auml;ssigkeit f&uuml;hrt zu einen mangelhaften und unzuverl&auml;ssigem
> Verhalten fr&uuml;herer Versionen von Apache f&uuml;r Linux.</note>

Make all of that past tense, as Apache 1.2 is _really_
outdated and should not have been in use for many years.
(That's why the note is "historical".)

> <p>Sollen keine dynamisch geladenen Module verwendet werden
> (was der Fall sein kann, wenn entsprechend dieser Ausf&uuml;hrungen
> das Optimum an Leistung erreicht werden soll), dann sollte beim Aufbau
> des Servers die Option <code>-DDYNAMIC_MODULE_LIMIT=0</code>
> angegeben werden. Das spart RAM-Speicher, der sonst f&uuml;r dynamisch
> geladene Module ben&ouml;tigt wird.</p>

Literally:
"Sollten Sie nicht vorhaben, dynamisch nachladbare Module
zu verwenden (was vermutlich der Fall sein wird, wenn Sie
diese Zeilen lesen und versuchen, das letzte bißchen Per-
formance aus ihrem Server herauszukitzeln), dann sollten
Sie bei der Übersetzung des Servers -DDYNAMIC_MODULE_LIMIT=0
angeben. Dies spart RAM, der (sonst) nur für die Unterstützung
dynamisch geladener Module reserviert wird (werden müßte?).

> <p>Der hier behandelte Trace der Systemaufrufe unter Apache 2.0.38 mit dem
> <code>worker</code>-MPM unter Solaris 8 wurde wie folgt erstellt:
> truss -l -p <var>httpd_child_pid</var>.

I'd try to stay closer to the original sentence structure:
"Nachfolgend sehen Sie einen Trace der Systemaufrufe von
Apache 2.0.38 unter Verwendung des Worker-MPM unter Solaris 8.
Dieser Trace wurde erzeugt durch das Kommando
     truss -l -p httpd_child_pid."

> Thread auf Serverkernebene)

Like many times before: You shouldn't use "server" for the
machine when server might as well mean "Apache".
And in connection with "kernel" I would prefer to translate
it to "operating system kernel" = "Betriebssystemkern".

> <p>Um die virtuellen Hosts implementieren zu k&ouml;nnen, muss der Apache
> die lokale Socket-Adresse f&uuml;r das Akzeptieren der Verbindung kennen.

Nope, but: "die lokale socket-Adresse, über welche diese
Verbindung akzeptiert wurde".
(This might be used to find out which Virtual Host is to
be addressed, I guess - could be IP-based Virtual Hosts?)

> benutzt werden, die keine Adressen mit Jokerzeichen haben).

Please don't translate "wildcard" here.

> Bisher wurden jedoch keine Anstrengungen f&uuml;r diese Optimierungen unternommen.
</p>

I would like this to be:
"Bisher wurde jedoch kein Versuch unternommen, Optimierungen
in dieser Hinsicht durchzuführen."

> <p>Die <code>brk(2)</code>-Aufrufe allokieren Speicher im Heap.

I'm not sure but I believe "allozieren" would be more common.

> Das ist in einem Systemaufruf-Trace selten zu erkennen,

Nope, but:
"Solche Aufrufe sind in einem Systemaufruf selten zu beobachten"

> weil das <code>httpd</code>-Programm f&uuml;r die Verarbeitung der meisten
Anfragen
> eigene Speicherallokatoren verwendet

And that's the reason why. Normally this just doesn't happen.

> In diesem Trace wurde das Programm <code>httpd</code> gerade gestartet, deshalb
>  muss es <code>malloc(3)</code> aufrufen,  um die Speicherbl&ouml;cke
f&uuml;r die
> eigenen Speicherallokatoren zu erhalten.</p>

Literally: ", aus denen es die eigenen ... erzeugt."
(I am not very sure how to actually translate "memory allocator",
as I lack the understanding of the corresponding Apache API.)

> <code>fcntl(2)</code> f&uuml;r Sockets behandelt.</p>

"to handle" might rather be "handhaben" or "erledigen" here.

> <p>Der <code>worker</code>-Thread liest Anfrage des Clients.</p>

Insert a "die" before "Anfrage".

> Daher wird <code>lstat(2)</code> nicht f&uuml;r jedes Verzeichnis im
Pfad zur angeforderten
> Datei ben&ouml;tigt. Auch die <code>.htaccess</code>-Dateien m&uuml;ssen
nicht
> &uuml;berpr&uuml;ft werden.

These two sentences should remain connected:
"Daher ist es für jedes Verzeichnis im Pfad zur angeforderten
Datei weder erforderlich, einen lstat(2)-Aufruf durchzuführen
(um auf symbolic link zu testen), noch, es nach (= auf die
Existenz) einer .htaccess-Datei zu prüfen."

> HTTP-Antwort-Header

I'd prefer to let "HTTP response header" untranslated.

>  Auff&auml;llig ist, dass in diesem Trace ein <code>time(2)</code>-Aufruf
fehlt.

Literally: "Beachten Sie, daß in diesem Trace unter anderem
kein time(2)-Aufruf auftaucht."
(We've noticed other missing things before, see above.)

> <p>Der <code>worker</code>-Thread schlie&szlig;t die Verbindung.</p>

You missed to mention the "lingering close" that has been
used here, which was discussed in lenght above.

> <p>Am Ende schlie&szlig;t der <code>worker</code>-Thread die Datei,
die er gerade
> ausgeliefert hat und blockiert, bis der Listener eine andere Verbindung zuweist.</p>

Insert "ihm" before "eine".
(Other assignments than these would be irrelevant.)

> (was Gegenstand der Flusskontrolllogik im <code>worker</code>-MPM ist,

I would just prefer "aufgrund der Kontrollflußlogik des
Worker-MPM".

> wenn die verf&uuml;gbaren <code>worker</code>-Threads besch&auml;ftigt

Why did you omit the important word "all" here?
("die" => "alle")

> Auch wenn das im Trace nicht ersichtlich ist,

"im" => "in diesem". (It might be in others...)


Sigh. I'm afraid that not many of your translated lines
are actually usable for this document...

Regards, Michael


---------------------------------------------------------------------
To unsubscribe, e-mail: docs-unsubscribe@httpd.apache.org
For additional commands, e-mail: docs-help@httpd.apache.org


Mime
View raw message