<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Julius Beckmann &#187; Lighttpd</title>
	<atom:link href="http://juliusbeckmann.de/blog/category/lighttpd/feed" rel="self" type="application/rss+xml" />
	<link>http://juliusbeckmann.de/blog</link>
	<description>Ich bin nicht verrückt, nur technisch begabt ...</description>
	<lastBuildDate>Wed, 05 Jun 2013 11:02:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Server Response mitten im POST File Upload</title>
		<link>http://juliusbeckmann.de/blog/server-response-mitten-im-post-file-upload.html</link>
		<comments>http://juliusbeckmann.de/blog/server-response-mitten-im-post-file-upload.html#comments</comments>
		<pubDate>Fri, 27 Feb 2009 17:56:20 +0000</pubDate>
		<dc:creator>Julius</dc:creator>
				<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Fileupload]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Header]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[POST]]></category>
		<category><![CDATA[Webserver]]></category>

		<guid isPermaLink="false">http://juliusbeckmann.de/blog/?p=204</guid>
		<description><![CDATA[Bei den aktuellen Arbeiten an einer Seite stieß ich auf folgendes Problem: Beim Upload von Dateien soll eine maximale Dateigröße nicht überschritten werden. Dazu fielen mir mehrere Möglichkeiten ein um diesen Check zu realisieren. Per Javascript die Dateigröße checken, was aber viel zu unsicher ist und leicht umgangen werden kann. Per PHP/Ruby/... die Größe der [...]]]></description>
			<content:encoded><![CDATA[<p>Bei den aktuellen Arbeiten an einer Seite stieß ich auf folgendes Problem:<br />
Beim Upload von Dateien soll eine maximale Dateigröße nicht überschritten werden.<br />
Dazu fielen mir mehrere Möglichkeiten ein um diesen Check zu realisieren.</p>
<ul>
<li> Per Javascript die Dateigröße checken, was aber viel zu unsicher ist und leicht umgangen werden kann.</li>
<li> Per PHP/Ruby/... die Größe der hochgeladenen Datei prüfen - Da die Datei bereits hochgeladen wurde hätte man dies auch gleich bleiben lassen können.</li>
<li> Dem Webserver eine maximale POST-Size mitgeben, bei Überschreitung macht dieser dann einen 3XXer Redirect oder zeigt eine Fehlerseite an.</li>
</ul>
<p>Da die ersten beiden Fälle keinen Sinn machen oder zu Fehleranfällig sind , hab ich den letzten Ansatz weiter verfolgt und musste dabei folgendes feststellen:</p>
<p>Keiner der getesteten Browser hat sich während eines POST File Uploads dazwischenreden lassen.<br />
Den Server habe ich einen 302 Header an die Browser senden lassen, während diese am Hochladen waren. FF und Opera haben stur Ihre "Connection Resettet" Fehlermeldung gezeigt und sich nicht um den 302er Haeder gekümmert.</p>
<p>Doch einzig Opera hat, beim, in dieser Situation, Standardkonformen 413er Header eine vom Server  gesendete Seite angezeigt.</p>
<p>Diese Erkentnisse lassen mich jetzt die Maximale POSTsize auf ein relativ hohen Wert einstellen, der hoffentlich von nur recht wenigen Nutzern wirklich jeh überboten wird.</p>
]]></content:encoded>
			<wfw:commentRss>http://juliusbeckmann.de/blog/server-response-mitten-im-post-file-upload.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lighttpd: Was ist an Lighttpd so besonders?</title>
		<link>http://juliusbeckmann.de/blog/lighttpd-was-ist-an-lighttpd-so-besonders.html</link>
		<comments>http://juliusbeckmann.de/blog/lighttpd-was-ist-an-lighttpd-so-besonders.html#comments</comments>
		<pubDate>Tue, 05 Aug 2008 14:25:43 +0000</pubDate>
		<dc:creator>Julius</dc:creator>
				<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apache2]]></category>

		<guid isPermaLink="false">http://juliusbeckmann.de/blog/?p=39</guid>
		<description><![CDATA[Dieser Artikel soll der Anfang einer kleinen Lighttpd Artikelreihe sein und hoffentlich so manche Fragen über diesen Webserver aus der Welt schaffen. In diesem ersten Artikel geht es um die Eigenschaften die Lighttpd anders macht als der Apache2. Bei Lighttpd und Apache2 handelt es sich um Webserver. Diese Programme liefern Webseiten aus wie diese die [...]]]></description>
			<content:encoded><![CDATA[<p>Dieser Artikel soll der Anfang einer kleinen Lighttpd Artikelreihe sein und hoffentlich so manche Fragen über diesen Webserver aus der Welt schaffen.</p>
<p>In diesem ersten Artikel geht es um die Eigenschaften die Lighttpd anders macht als der Apache2.</p>
<p><span id="more-39"></span></p>
<p>Bei Lighttpd und Apache2 handelt es sich um Webserver. Diese Programme liefern Webseiten aus wie diese die Sie gerade lesen. Der alt eingesessene Apache ist einer der verbreitetsten Webserver weltweit. Doch inzwischen gibt es mehrere Webserver die dem Apachen das Wasser reichen können. Lighttpd ist einer von denen.</p>
<p>Hauptsächlich wird der Apache2 mit dem Prefork-Module genutzt. Dieses Modul erstellt mehrere Unterprozesse (Threads) vom Apachen welche sich dann jeweils immer um eine Verbindung zur Zeit kümmern können. beim Lighttpd sieht das anders aus. Lighttpd verarbeitet die Anfragen und Verbindungen in einem asynchronen System.</p>
<p>Der Apache2 muss also für jede aktive Verbindung einen Unterprozess haben welcher diese abarbeitet. Problem bei der Sache ist dass dies viel RAM und auch Rechenzeit benötigt, was die RAM-Größe zum beschränkenden Faktor macht. Wenn der Apache auch noch mit mod_php läuft wird der Arbeitsspeicherverbrauch sogar noch größer.</p>
<p>Beim Lighttpd sieht das anders aus. Dieser benötigt immer nur einen Prozess, egal wie viele Verbindungen zu bearbeiten sind. Bei vielen Verbindungen fängt Lighttpd zwar auch an Unterprozesse zu erstellen, doch das passiert nicht auf Prozessebene, sondern durch Multithreading was auch noch schön auf mehrere CPUs skalieren kann.</p>
<p>Aus diesen grundlegenden Eigenschaften von Apache2 und Lighttpd können wir zusammengefasst folgende Schlüsse ziehen:</p>
<p>Apache2:</p>
<ul>
<li>Viele Prozesse</li>
<li>Viel RAM</li>
<li>Wenige max. Verbindungen</li>
</ul>
<p>Lighttpd:</p>
<ul>
<li>Ein Prozess</li>
<li>Wenig RAM</li>
<li>Viele max. Verbindungen</li>
</ul>
<p>Für den Apachen gibt es eine sehr größe Auswahl an Plugins/Modulen was Ihn sehr vielseitig macht. In Verbindung mit mod_php ist PHP auch sehr schnell.</p>
<p>Der Lighttpd ist noch recht jung und bietet daher eher nur Standard Plugins/Module was sein Einsatzzweck etwas eingrenzen kann. Aber auch hier lässt sich PHP über FastCGI sehr schnell betrieben was sogar noch mehr Vorteile wie entfernte FastCGI-Server erlaubt usw.</p>
<h3>Beispiel:</h3>
<p>Zum Schluss möchte ich einmal ein Verwendungsbeispiel der Webserver geben welches Ihre Vorteile ausnutzt.<br />
<strong> Youtube</strong> nutzt als Frontend Webserver den Apachen, weil dieser zum generieren des Dynamischen Inhalts am geeignetsten ist. Doch die Statischen Dateien wie Bilder, CSS, Javascript und sogar die Videos werden von Lighttpd gesendet da dieser im Vergleich zu Apache mehr Verbindungen handeln kann und eine bessere Netzwerkauslastung erreicht.<br />
Wer also eine gut besuchte Seite hat welche unter Performanceproblemen leidet könnte sich ja mal daran versuchen seinen Statischen Content auf einen zweiten Server/andere IP auf dem Lighttpd läuft zu verlagern. Weil, warum sollte man den Apachen mit Verbindungen quälen welche nur simple Bilder versenden und dadurch unnötig RAM brauchen?</p>
<p>Julius Beckmann<br />
05.08.2008</p>
]]></content:encoded>
			<wfw:commentRss>http://juliusbeckmann.de/blog/lighttpd-was-ist-an-lighttpd-so-besonders.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
