Michael Schröpl: Chat in HTML mit einer Scriptsprache ohne Reload

Beitrag lesen

Hallo Stefan,

Ein Apache-Prozeß bedient viel mehr als nur einen einzigen Client. Du hast natürlich nicht einen Prozeß pro Chat-Partner. (Sonst wäre der Server ja auf 256 gleichzeitige Besucher limitiert ... dann hättest Du ständig DOS-Situationen.)
Siehst du, das hab ich gar nicht gewusst! Wo erfaehrt man denn so was - wieviele User von einem Apache-Prozess verwaltet werden?

Uh ... ich weiß auch nicht so recht ...

Hast Du mod_status und mod_info eingebunden? (Dumme Frage - sicher, wenn Du 11 MB ... ;-)

Sind beide auch konfiguriert? (Mapping eines URL auf den Aufruf des entsprechenden Handlers ... sinnvollerweise mit Authentifizierung geschützt ...)
   http://httpd.apache.org/docs/mod/mod_status.html
   http://httpd.apache.org/docs/mod/mod_info.html
Damit kannst Du im laufenden Betrieb in den Apache "hinein sehen".

Mit mod_status sieht man zumindest die Prozesse, das habe ich mal ausprobiert.
mod_info listet wohl nur die Module und Direktiven aus - das geht auch per Kommandozeile (siehe unten).

Und überhaupt, was hast Du für einen Apache? Meiner belegt etwa ein Drittel davon - wirf doch mal die ganzen Module raus, die nicht gebraucht werden ...
Ich rede nicht von "meinem daheim", sondern von dem hier auf dem Server. Das top-Kommando weist derzeit ca. 11 MB pro Apache-Prozess aus.

Das hier läuft bei uns produktiv auf der Serverfarm:

PID USERNAME THR PRI NICE  SIZE   RES STATE   TIME    CPU COMMAND
29784 nobody     3  48    0 3944K 2968K sleep   0:01  0.00% httpd

(Ich überlege gerade, ob "THR" die Threads innerhalb des Prozesses sind ... Mist, "man top" tut nicht, das Produkt hat unser Solaris-Admin irgendwann mal schnell nachinstalliert ...)

/apache/current > bin/httpd -l
Compiled-in modules:
  http_core.c
  mod_env.c
  mod_log_config.c
  mod_mime.c
  mod_include.c
  mod_dir.c
  mod_cgi.c
  mod_actions.c
  mod_alias.c
  mod_access.c
  mod_auth.c
  mod_proxy.c
  mod_expires.c
  mod_headers.c
  mod_setenvif.c
  mod_gzip.c

(Das ist so "das Nötigste für den Hausgebrauch" - die httpd.conf habe ich allerdings radikal umgeschrieben. "configure" ist das Werkzeug, um hier 'abzumagern'.)

Wie funktioniert eigentlich das IRC-Protokoll

Keine Ahnung ... Google meint: RFC 1459 = http://www.irchelp.org/irchelp/rfc/rfc.html

bzw. wie schafft es seine Effizienz bei persistenten Verbindungen?

Eine Unterhaltung läuft viel flüssiger, wenn sich nicht jeder Teilnehmer vor jedem Satz ausführlich vorstellen muß. Bei einer stehenden Verbindung "kennt man einander". Das hilft. ;-)

Gibt es da nur Minimal-Header?

Wahrscheinlich bloß eine Session-ID, und einen Header für den aktuellen Befehl. Und beides womöglich noch binär codiert ...

Bei HTTP sendet der Browser ja seine volle Palette an Fähigkeiten mit,
[ 35] GET /cgi-bin/http_trace.pl HTTP/1.1
[ 20] ACCEPT_LANGUAGE: en
[ 18] CONNECTION: close
[ 12] ACCEPT: */*
[ 34] USER_AGENT: Mozilla/5.0 (rv:1.3b)
[ 19] HOST: 153.46.90.85
[ 22] ACCEPT_ENCODING: gzip
[ 47] ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.7
für den Fall, daß ein hochintelligenter Server dann damit eine Negotiation durchführt ... was die wenigstens tatsächlich tun.
Je einfacher (und unflexibler) das Protokoll ist, um so weniger muß der Client über sich erzählen.

Und dann gibt es ja noch die Erweiterbarkeit von Webservern wie Apache. Klar bleibt man immer an den Grenzen von HTTP haengen. Aber erlaubt das Modulsystem von Apache nicht, auch mal ein Modul zu integrieren, dass fuer derartige Aufgaben optimiert ist?

Module regeln, was _innerhalb_ des Apache passiert - _außerhalb_ wird HTTP gesprochen.

Unsere Diskussion dreht sich um die Eignung von HTTP für das Problem - nicht um Apache.

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)