PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : apache2.conf Größe & Apache reload



samy-delux
09.05.07, 23:29
Hey Leute,

Ich plane im Moment ein größeres Projekt und frage mich im Moment 2 Sachen.

1. Wie kommt Apache mit Konfigurationsdateien klar, die ca. 2Mb groß sind? Im speziellen wuerde es sich um mehrere sehr große mod_rewrite Anweisungen halten.

2. Wie lange setzt eine Reload den Apache Server ausser Kraft? Es sollte doch theoretisch der normale Betrieb ohne Unterbrechung weitergehen? Stimmt das?
Und wie verhält sich das ganze, wenn Apache alle 15 min. neu geladen wird?

Der Hintergrund:
Es geht um eine Freehostinganbieter der ca. 60.000 Benutzer hat. Alle Webpages sind per subdomain erreichbar ( username.freehosting123.de ).
Dies waere per mod_rewrite soweit einfach zu erreichen. Das Problem liegt darin, dass weder vom Festplattenplatz, noch von der Last her alles auf einem Server liegen kann! Also muessen die Anfragen intern an die verschiedenen Server weitergeleitet werden.
Jetzt koennte man es auch so machen das alle Usernameen mit a-m als ersten Buchstaben an Server 1 und und alle mit n-z an Server 2 weitergeleitet werden.
Dies funktioniert aber dann nicht mehr, wenn ein neuer Server hinzugefuegt wird. Also muss jeder Usernamen in der Regular Expression die entweder zum 1. oder 2. oder X. Server gehoert stehen. Das wuerde die Apache Konfigurationsdatei jedoch sehr groß machen. Bei 200.000 Usern eben ca. 2Mb... (12Byte [pro User] / 1024 [Kilobyte] * 200.000 [User])

Fuer bessere Ideen bin ich jederzeit offen!!!


Vielen Dank schonmal!
so long,
Samy

cane
10.05.07, 00:55
1. Wie kommt Apache mit Konfigurationsdateien klar, die ca. 2Mb groß sind? Im speziellen wuerde es sich um mehrere sehr große mod_rewrite Anweisungen halten.


Hängt stark davon ab was in den dateien drinsteht



2. Wie lange setzt eine Reload den Apache Server ausser Kraft? Es sollte doch theoretisch der normale Betrieb ohne Unterbrechung weitergehen? Stimmt das?
Und wie verhält sich das ganze, wenn Apache alle 15 min. neu geladen wird?

Hängt davon ab wieviel last auf dem server ist, welche module arbeiten, was sie tun etc. Auf Servern mit hohem Load kann das scon einige Minuten dauern.


Der Hintergrund:
Es geht um eine Freehostinganbieter der ca. 60.000 Benutzer hat. Alle Webpages sind per subdomain erreichbar ( username.freehosting123.de ).
Dies waere per mod_rewrite soweit einfach zu erreichen.


Warum nicht DNS benutzen, was soll da mod_rewrite tun? :confused:


Das Problem liegt darin, dass weder vom Festplattenplatz, noch von der Last her alles auf einem Server liegen kann! Also muessen die Anfragen intern an die verschiedenen Server weitergeleitet werden.


Genau - aber bitte per DNS :)

mfg
cane

samy-delux
10.05.07, 22:36
Ich glaube nicht, dass es per DNS funktioniert!
Denn zu jeder User hat ja seine eigene Subdomain, die aber alle zu der selben Domain gehoeren. Das Problem ist jetzt, dass jede Subdomain, ja nur auf einem der Server vorhanden ist. Wie soll da per DNS der richtige gefunden werden?
Oder kann man auch DNS fuer Subdomains machen?

so long,
Samy

carstenj
10.05.07, 22:55
Hi,

ich versteh den Einsatz von mod_rewrite auch überhaupt nicht.

Stichwort: Virtual Hosts (http://httpd.apache.org/docs/2.0/de/vhosts/)

Dein Lastproblem kann vielleicht damit gelöst werden, wobei dann eben doch mod_rewrite nützlich sein kann: ;)
http://httpd.apache.org/docs/2.0/misc/rewriteguide.html


Das Problem liegt darin, dass weder vom Festplattenplatz,
Wieso? Wieviel MB willst du denn den einzelnen Benutzern geben?

samy-delux
10.05.07, 23:53
Jeder Benutzer bekommt 1GB... aber im Moment ist es so, dass 70% der Benutzer unter 1MB benutzen.
Das Angebot existiert uebrigens schon und hat 60.000 Benutzer. Im Moment ist die Lastenverteilung so geregelt das es einemal "freehoster.de", "freehoster2.de" und "freehoster3.de" gibt. Es sind alles komplett getrennte Seiten. Dieses System ist zwar einfach und funktioniert gut, jedoch sehr "banausenhast". Deshalb soll ich das System neu gestalten (ich hab das alte nicht gemacht)

Wenn ich fuer jeden Benutzer einen Virtual Host einrichten wuerde, dann waere die Konfigurationsdatei noch um einiges groesser. Mir ist jedoch jetzt auch klar geworden, dass die Benutzung von Virtual Hosts, viel besser waere fuer das Problem!! Danke schoneinmal!

Nehmen wir mal an fuer eine Virtualhost werden 220Kb Kilobyte benoetigt (habe das mal schnell ungefaehr ausporbiert). Das fuer angenommene Userzahl von 100.000 in der Zukunft, waeren gute 19Mb an Konfiguration....

Und neue Nutzer sollten ihren Webspace ja auch so schnell wie moeglich auf ihren neuen Webspace zugreifen koennen. Ich mein, ein Reload alle 24 Stunden waere ok, sollte aber nicht zu lange dauern, selbst wenn er um 4 Uhr Morgen geschieht!

Bleibt auch die Frage, wie Apache mit so einer Konfiguration grossen ueberhaupt umgeht...

so long,
Samy

cane
11.05.07, 00:02
Ich glaube nicht, dass es per DNS funktioniert!

Es ist möglich und wird fast überall per DNS gehandhabt wenn pro X Subdomains verschiedene Server im Spiel sind. Du brauchst eine Kombination aus DNS-Records (denk an den MX wenn email möglich sein soll) und "named virtual hosts".


Das Problem ist jetzt, dass jede Subdomain, ja nur auf einem der Server vorhanden ist. Wie soll da per DNS der richtige gefunden werden?
Oder kann man auch DNS fuer Subdomains machen?

Ja klar, wie sollte man sonst in Unternehmen einzelne Rechner (dns.example.com, proxy,example.com, ...) erreichen können?

mfg
cane

cane
11.05.07, 00:10
Jeder Benutzer bekommt 1GB... aber im Moment ist es so, dass 70% der Benutzer unter 1MB benutzen.
Das Angebot existiert uebrigens schon und hat 60.000 Benutzer. Im Moment ist die Lastenverteilung so geregelt das es einemal "freehoster.de", "freehoster2.de" und "freehoster3.de" gibt. Es sind alles komplett getrennte Seiten. Dieses System ist zwar einfach und funktioniert gut, jedoch sehr "banausenhast". Deshalb soll ich das System neu gestalten (ich hab das alte nicht gemacht)

Du redest momentan nur von webseiten - können die user auch emails verschicken?


Wenn ich fuer jeden Benutzer einen Virtual Host einrichten wuerde, dann waere die Konfigurationsdatei noch um einiges groesser. Mir ist jedoch jetzt auch klar geworden, dass die Benutzung von Virtual Hosts, viel besser waere fuer das Problem!! Danke schoneinmal!

Um die vhosts auf mehrere server zu splitten die nicht freehoster1.de, freehoster2.de. freehosterX.de heißen sondern einfach immer subdomain.freehoster.de zu verwenden kombinierst Du einfach wie oben beschrieben.


Nehmen wir mal an fuer eine Virtualhost werden 220Kb Kilobyte benoetigt (habe das mal schnell ungefaehr ausporbiert). Das fuer angenommene Userzahl von 100.000 in der Zukunft, waeren gute 19Mb an Konfiguration....


da verwechselst du was - ein vhost Eintrag verursacht ein paar byte aber nicht mal 4 KB geschweige denn 220 Kb.

mfg
cane

samy-delux
11.05.07, 00:15
da verwechselst du was - ein vhost Eintrag verursacht ein paar byte aber nicht mal 4 KB geschweige denn 220 Kb.

Sorry hatte ich micht verschrieben... Ich meinte 220 Byte!
200Byte / 1024 KB pro Byte * 100.000 User / 1024Mb pro KB = 19,07 Megabyte
Und das ist schon recht viel...

Zu den eMails. Die User koennen nach meinem Momentanen kenntnisstand keine eMails verschicken!

so long,
Samy

Roger Wilco
11.05.07, 00:31
Schonmal http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html gelesen?

cane
11.05.07, 00:34
Sorry hatte ich micht verschrieben... Ich meinte 220 Byte!
200Byte / 1024 KB pro Byte * 100.000 User / 1024Mb pro KB = 19,07 Megabyte
Und das ist schon recht viel...

Ja aber sie sind ja zudem noch verteilt auf die einzelnen Server die den Space hosten, momentan hast Du also nur 20.000 vhosts pro server.

teste doch einfach mal in ner vmware, lass einen lastgenerator der 1000 clients simuliert auf zufällige vhosts laufen und miss die reloadzeiten.

mfg
cane

cane
11.05.07, 00:40
Schonmal http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html gelesen?

Da fällt mir ein das wir vergessen haben zu fragen ob Interpreter wie PHP genutzt werden sollen, wenn ja warscheinlich mit eigenen Direktiven um das ganze sicher zu halten.

@samy-delux

Welche Scriptsprachen dürfen die Kunden verwenden und wie sind diese konfiguriert?

mfg
cane

samy-delux
11.05.07, 15:07
Sie duerfen PHP verwenden und bekommen eine MySQL Datenbank!
Aber die Nutzer duerfen nichts an der Konfiguration von PHP aendern und bekommen auf MySQL auch nur "user" Zugriff!

Das mit VMWare zu simulieren ist natuerlich eine Interessante Idee. Werd ich ausprobieren. Es ist jedoch auch die Frage, wie es mit der Vergleichbarkeit aussieht.
Mein Notebook hat nen 1,83Ghz Pentium M und 1GB Ram, die Server haben jeweils einen einen Dual Core Opteron mit 2x2,6 Ghz und 4 GB Ram...

so long,
Samy

samy-delux
11.05.07, 20:48
Hey Leute, ich hab die Loesung des Problems gefunden:
Dynamically configured mass virtual hosting
http://httpd.apache.org/docs/2.2/de/vhosts/mass.html

Das bringt mir eine kleine apache2.conf und ich muss nich reloaden!
Also alles perfekt!

Edit: Wurde ja in Post #9 auch schon genannt. Aber da nur eine bestimmte Funktion.

so long,
Samy

cane
11.05.07, 23:14
Sie duerfen PHP verwenden und bekommen eine MySQL Datenbank!
Aber die Nutzer duerfen nichts an der Konfiguration von PHP aendern und bekommen auf MySQL auch nur "user" Zugriff!

Sichere voneinander abgeschottete PHP Kontexte oder eine Standardconfig in der jeder user auf einfachste Weise die Files und datenbank der anderen User einsehen kann?


Das mit VMWare zu simulieren ist natuerlich eine Interessante Idee. Werd ich ausprobieren. Es ist jedoch auch die Frage, wie es mit der Vergleichbarkeit aussieht.
Mein Notebook hat nen 1,83Ghz Pentium M und 1GB Ram, die Server haben jeweils einen einen Dual Core Opteron mit 2x2,6 Ghz und 4 GB Ram...


Ja miss halt erstmal um überhaupt einen Wert zu erhalten. Mit welchem Multi-Processing-Module arbeitet der Apache, über die Apache Config lassen sich in deinem Fall garantiert mehrere 100 % Performance rausholen.

Wo ist momentan der Flaschenhals: CPU, RAM oder Storage? willst Du optimieren oder je nach Bedarf weitere Server zufügen?

mfg
cane

samy-delux
12.05.07, 20:21
Sichere voneinander abgeschottete PHP Kontexte oder eine Standardconfig in der jeder user auf einfachste Weise die Files und datenbank der anderen User einsehen kann?

Ja natuerlich. Wahrscheinlich werde ich hierfuer suPHP einsetzten.
Hat jemand informationen dazu als wie stabil das Programm betrachtet werden kann??


Ja miss halt erstmal um überhaupt einen Wert zu erhalten. Mit welchem Multi-Processing-Module arbeitet der Apache, über die Apache Config lassen sich in deinem Fall garantiert mehrere 100 % Performance rausholen.

Hier werde ich wahrscheinlich auf "worker" setzen. Doch auch hier stellt sich mir wieder die Frage wie stabil "event" ist, da es ja auf worker aufsetzt, aber den Ansatz noch weiter treibt. Ist halt noch als experimentell gekennzeichnet, von daher werde ich es eher nicht einsetzen!


Wo ist momentan der Flaschenhals: CPU, RAM oder Storage? willst Du optimieren oder je nach Bedarf weitere Server zufügen?

Im Moment ist der Flaschenhals ganz klar Storage. Die Server sind alle hoffnungslos ueberfuellt. Es sind jeweils 20.000 Benutzer auf 200GB Servern. Sobald mal mehr Benutzer ihr GB voll ausnutzen klappt alles zusammen. Und die Userfiles sind auf der Systempartition gelagert und ohne Quotas, von daher kackt immer der ganze Server ab wenn zu viel hochgeladen wird.
Es gibt auch keine Moeglichkeit User zu einem neuen Server zu uebertragen, deshalb steht das jetztige System eh am Abgrund.... Es wird nur dadurch am Leben gehalten, dass Admins staendig nach illegalen Dateien suchen und diese loeschen. Aber irgendwann bringt auch das nichts mehr!

so long,
Samy

samy-delux
12.05.07, 23:00
Ja natuerlich. Wahrscheinlich werde ich hierfuer suPHP einsetzten.
....
Hier werde ich wahrscheinlich auf "worker" setzen.

Ok, das ganze hat sich wohl erledigt. Ich werden das Multi-Processing Module ITK benutzen. Es befindet sich zwar noch in der Entwicklung, doch ich find es ist ein gute Kompromiss zu dem gefrickel mit suexec. Hab keine Lust dass PHP Skripte nur als CGI ausgefuehrt werden. Das ist schon langsam und da ich mit ITK auch Sachen wie eAccelerator nutzen kann, werden die CGI Skripte relativ gesehen noch lahmer...

so long,
Samy

cane
14.05.07, 13:26
Also schnell ist PHP-FCGI(D), gerne zusammen mit Beschleunigern wie Eaccelerator schon...

mfg
cane

samy-delux
14.05.07, 19:51
Ich hab mir ein paar eMails mit dem Autor dieses MPMs geschrieben und ich fuehl mich irgendwie sehr sicher, wenn er mir erzaehlt, dass er es auf dem 12 Server Cluster seiner Uni mit 9 Millionen hits am Tag betreibt :D
Es ist ausserdem in Debian stable dabei und kommt mir einfach als die sauberere Loesung vor!

cane
15.05.07, 03:06
MPM ist auch für Multiprozessormaschinen gedacht - Du hast aber AFAIK doch gar keine Multiprozessormaschinen, oder?

mfg
cane

Roger Wilco
15.05.07, 09:47
MPM = Multi-processing Module

Das hat erstmal gar nichts mit Uni- oder Multiprozessorsystemen zu tun...

samy-delux
15.05.07, 22:31
Genau. Diese Module stellen einfach nur verschiedene Ansaetze bereit, den Apache auf viele Benutzer zu optimieren.
Und der Server hat eine Dual-Core Opteron...

cane
16.05.07, 15:54
Ein dualCore Opteron ist für mich keine Multiprozessormaschine.


MPM = Multi-processing Module

Das hat erstmal gar nichts mit Uni- oder Multiprozessorsystemen zu tun...
Gestern 03:06

Das hat mit dem Wort nichts zu tun :) Es ist aber so - kann man überall lesen und es gibt auch Performancevergleiche.

mfg
cane

Roger Wilco
16.05.07, 16:04
Das hat mit dem Wort nichts zu tun :) Es ist aber so - kann man überall lesen und es gibt auch Performancevergleiche.
Deine Quelle?

samy-delux
16.05.07, 16:27
Das hat mit dem Wort nichts zu tun :) Es ist aber so - kann man überall lesen und es gibt auch Performancevergleiche.

Das stimmt nicht:
Zitat: "Der Server wird mit einer Auswahl von Multi-Processing-Modulen (MPMs) ausgeliefert, die für die Bindung an Netzwerkports der Maschine, die Annahme von Anfragen und die Abfertigung von Kindprozessen zur Behandlung der Anfragen zuständig sind."

http://httpd.apache.org/docs/2.2/mpm.html

MPMs haben absolut nichts mit Prozessoren zu tun. Klar wird ein apache, der durch ein MPM threadbasiert betrieben wird auf mehreren Prozessoren viel besser mitskalieren, als ein rein prozessbasierter apache.
Doch genauso wird er auf einem einzelnen Prozessor viel mehr Clients bedienen koennen!!

so long,
Samy