Masshosting mit Apache2

Kommt es mir nur so vor, oder diskutiert Ihr hier am Thema vorbei?
Da steht doch:
Und da MySQL keine Rolle spielt, steht das dem Apach ganz allein zur Verfügung, oder?

Klar gilt es beim MPM-Prefork, die Datengröße klein zu halten, die geforkt werden soll. Dennoch ist genug Speicher vorhanden. Die Optimierung sehe ich eher in Richtung PHP-Accelerator mit ordentlich RAM-Nutzung.

Ach ja, und für sowas:
momentan hab ich leider das problem, dass er zum antworten einfach viel zu lange braucht, weil er vermutlich einfach maßlos überlastet ist.
...braucht es Fakten!
Denn mit Vermutungen kommt man nicht weit bzw. läuft lediglich in Sackgassen.

huschi.
 
@huschi
Was für Fakten brauchst du? Ich liefer sie dir gerne.. ;)

Zum Anzeigen der Seite und zum Downloadstart einer der Dateien braucht er ca. 20sec..

Laut top ist der RAM voll und geswapt wird auch etwas, wenn man sich die Programme anschaut, die immer mal wieder laufen.
Allerdings sind beim swap immer nur 92k belegt.

Also momentan sieht es wie folgt aus:

Code:
Cpu(s):  0.2%us,  0.5%sy,  0.0%ni, 97.5%id,  1.0%wa,  0.5%hi,  0.3%si,  0.0%st
Mem:  16469312k total, 16380668k used,    88644k free,    44388k buffers
Swap: 19535032k total,       92k used, 19534940k free, 15682308k cached

Es läuft auf der Kiste eigentlich nur der apache2.
Momentan sind 553 verbindungen zum apache aktiv

Der größte apache Prozesse belegt so viel Speicher:
Code:
S    33   990   983  0  80   0  7336 22249 -      ?        00:00:02 apache2
also 7336kb... 7,3MB

Module sind nur noch die aktiv:
Code:
alias auth_token authz_host autoindex dir env headers mime negotiation php4 rewrite setenvif status
 
Last edited by a moderator:
Gib mal nen Link zu irgendeiner Datei her damit wir das Problem selber sehen. Und poste die komplette Ausgabe von ps aux.
 
was für fakten braucsht du?
Ein Faktum ist, dass Du Dich hier nicht an die Regeln hälst. Bitte lies auch Deine PM's dazu.

zum anzeigen der seite und zum downloadstart einer der datei braucht er ca. 20sec..
...gefühlte...!
Fakten heißt: Ausgabe von Analyse-Tools wie z.B. Apache-Benchmark ("ab").

laut top is der ram voll... geswapt wird auch etwas
"Ram voll" ist normal unter Linux. D.h. aber noch lange nicht, dass der Ram von den Programmen genutzt wird. Denn der Cache nimmt sich jedes bisschen freien Speicher um die HD-Zugriffe zu minimieren.
Und der Swap ist unbenutzt.

momentan sind 553 verbindungen zum apache aktiv
Wie und wo gemessen?

Ein 64er- oder Bigmem-Kernel sollte das schon sein, sonst würde top nicht soviel Speicher anzeigen.

huschi.
 
Hallo,

sorry wegen der Rechtschreibung! Ich werde die Beiträge alle noch ausbessern.

So habe ich den Benchmarktest gestartet:

Code:
ab -kc 10 -t 30 http://localhost/

das kam beim Benchmarktest raus, als ich ihn gerade neu gestartet hatte.

Code:
Server Software:        Apache/2.2.3
Server Hostname:        localhost
Server Port:            80

Document Path:          /
Document Length:        198 bytes

Concurrency Level:      10
Time taken for tests:   2.503721 seconds
Complete requests:      50000
Failed requests:        0
Write errors:           0
Non-2xx responses:      50000
Keep-Alive requests:    49997
Total transferred:      21696575 bytes
HTML transferred:       9900000 bytes
Requests per second:    19970.28 [#/sec] (mean)
Time per request:       0.501 [ms] (mean)
Time per request:       0.050 [ms] (mean, across all concurrent requests)
Transfer rate:          8462.60 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     0    0  28.1      0    2331
Waiting:        0    0  28.1      0    2331
Total:          0    0  28.1      0    2331

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%      0
  95%      0
  98%      0
  99%      0
 100%   2331 (longest request)

das kam leider schon nach 5 Minuten, als ich den Benchmark nochmal startete.

Code:
Server Software:        Apache/2.2.3
Server Hostname:        localhost
Server Port:            80

Document Path:          /
Document Length:        198 bytes

Concurrency Level:      10
Time taken for tests:   20.758326 seconds
Complete requests:      50000
Failed requests:        0
Write errors:           0
Non-2xx responses:      50000
Keep-Alive requests:    49997
Total transferred:      21696569 bytes
HTML transferred:       9900000 bytes
Requests per second:    2408.67 [#/sec] (mean)
Time per request:       4.152 [ms] (mean)
Time per request:       0.415 [ms] (mean, across all concurrent requests)
Transfer rate:          1020.70 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     0    2 235.1      0   20475
Waiting:        0    2 235.1      0   20475
Total:          0    2 235.1      0   20475

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%      0
  95%      0
  98%      0
  99%      0
 100%  20475 (longest request)

und so sieht es nach 10 Minuten aus.

Code:
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
apr_poll: The timeout specified has expired (70007)


Die momentanen Verbindungen des Apache habe ich wie folgt gemessen.
inkl. aktueller Wert
Code:
netstat -an | grep -c 123.123.123.*:80
681




Gruß
scoop
 
Last edited by a moderator:
a) Von localhost ist zwar ein schöner Start, aber für einen realen Benchmark nicht geeignet.
b) http://localhost ist ebenfalls ein schlechter Start. Ein PHP-Script wäre z.B. sinnvoller um wirklich die Prozess-Leistung beurteilen zu können.

netstat -an | grep -c 123.123.123.*:80
Das ist eine schlechte Art!
Hier werden auch einige Zahlen aus der Vergangenheit und Zukunft erfasst.
Wie viele Apache-Prozesse aktuell im Speicher hängen findest Du in "ps". Wie viele Threads davon wirklich arbeiten steht im Server-Status.

huschi.
 
Hallo,

das Problem ist, dass auch mit einem Script der Apache viel zu lange zum reagieren braucht.
Also das selbe in grün.

Hier mal über ps gecountet.

Code:
ps -ef | grep -c apache2
258

hier mal ein Auszug vom top, vielleicht nützt er was..

Code:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
21041 www-data  20   0 88356 6556 3492 S    1  0.0   0:00.04 apache2
21059 www-data  20   0 88352 6548 3488 S    1  0.0   0:00.04 apache2
21269 www-data  20   0 88352 6552 3488 S    1  0.0   0:00.02 apache2
21513 www-data  20   0 88352 6552 3492 S    1  0.0   0:00.04 apache2


Gruß
scoop
 
Hi

ich bekomm da leider die selbe Fehlermeldung ausgegeben, wie es bei dem Beitrag zuvor schon war.

Code:
apr_poll: The timeout specified has expired (70007)

Kann es nicht sein, dass mit den Einstellungen in der apache.conf einfach nicht mehr möglich ist, als die momentanen Zugriffe?


Gruß
scoop
 
Hallo,

ich schähme mich fast schon, aber ich hab lediglich einen banalen Fehler gemacht. :)

Der Apache ist auf 256 Verbindungen standardmäßig beschränkt und das war mein Fehler. Daher auch die enormen Anfragezeiten.

Ich habe einfach in meiner apache.conf die Änderung angepasst so, dass es mehr sein können und jetzt habe ich keine Probleme mehr.

Code:
<IfModule prefork.c>
StartServers        10
MinSpareServers     10
MaxSpareServers     20
ServerLimit        2048
MaxClients         1024
MaxRequestsPerChild  10000
</IfModule>

Ich habe festgestellt, dass das "ServerLimit" vor dem "MaxClients" stehen muß, da er sonst beim restart meckert.
So funktioniert allerdings jetzt alles.

Für Modifikationen der Einstellungen bin ich allerdings offen! Momentan läuft alles super, allerdings kann es natürlich sein, dass ich irgendwann an Grenzen stoße.

Vielleicht hilft dem einen oder anderen ja meine "Dummheit"... :)

Gruß
scoop
 
Back
Top