<?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>Merls Blog &#187; Server</title>
	<atom:link href="http://www.merls-blog.de/category/technik/computer/server/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.merls-blog.de</link>
	<description>Dieses und Jenes</description>
	<lastBuildDate>Tue, 07 Jun 2011 21:41:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Genug Swap und trotzdem OOM-Killer</title>
		<link>http://www.merls-blog.de/2011/06/07/genug-swap-und-trotzdem-oom-killer/</link>
		<comments>http://www.merls-blog.de/2011/06/07/genug-swap-und-trotzdem-oom-killer/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 21:14:06 +0000</pubDate>
		<dc:creator>Merl</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[oom-killer]]></category>
		<category><![CDATA[overcommit]]></category>

		<guid isPermaLink="false">http://www.merls-blog.de/?p=581</guid>
		<description><![CDATA[Ich hatte ja vor kurzem Swapspace eingerichtet. Damit dürfte, so der Gedanke, der Server nicht mehr wegen Speichermangels abschmieren. Ging nen Monat gut, und dann war er wieder weg und der gute alte bekannte oom-killer hatte seine Spuren im syslog hinterlassen. Also zurück ans Reissbrett.. oder doch nicht?

Nach etwas weiteren Googlesuchen stolperte ich ...]]></description>
			<content:encoded><![CDATA[<p>Ich hatte ja vor kurzem Swapspace<sup class='footnote'><a href='#fn-581-1' id='fnref-581-1'>1</a></sup> <a title="Server-Stabilität" href="http://www.merls-blog.de/2011/04/26/server-stabilitat/">eingerichtet</a>. Damit dürfte, so der Gedanke, der Server nicht mehr wegen Speichermangels abschmieren. Ging nen Monat gut, und dann war er wieder weg und der gute alte bekannte oom-killer hatte seine Spuren im syslog hinterlassen. Also zurück ans Reissbrett.. oder doch nicht?</p>
<p>Nach etwas weiteren Googlesuchen stolperte ich über einen Artikel<sup class='footnote'><a href='#fn-581-2' id='fnref-581-2'>2</a></sup> von Henrik Skupin<sup class='footnote'><a href='#fn-581-3' id='fnref-581-3'>3</a></sup> in dem er sich ebenfalls über die sinnbefreiten Defaults die es teilweise unter Linux gibt auslässt.</p>
<p><span id="more-581"></span>Anlass für seinen Artikel war genau mein Problem, trotzdem ausreichend Swap vorhanden ist, kommt der oom-killer und schießt Prozesse ab. Manchmal läuft der Server für Wochen ohne Probleme, dann stirbt er wieder mehrmals täglich.</p>
<p>Henrik wiederrum verweist auf ein Dokument &#8220;The Linux Kernel&#8221;<sup class='footnote'><a href='#fn-581-4' id='fnref-581-4'>4</a></sup> von Andries Brouwer. Dort ist insbesondere das Kapitel 9.6 &#8220;Overcommit and OOM&#8221;<sup class='footnote'><a href='#fn-581-5' id='fnref-581-5'>5</a></sup> interessant.</p>
<p>Kurz gesagt: Anders als andere Unixe, gibt Linux gerne jedem Programm soviel Speicher wie es verlangt, in der Hoffnung, dass es mehr verlangt als es braucht. Brauchen die Programme dann aber doch mehr als vorhanden ist, kommt unser Freund der oom-killer und versucht möglichst nicht vitale Prozesse abzuschießen. Die Betonung liegt auf versucht, irgendwann erwischts den falschen Prozess. Wiedermal ein toller default!</p>
<p>Mit Kernel 2.1.27 ist den Entwicklern dann auch aufgefallen, dass das Quark ist und sie haben <em></em>eine Option geschaffen das verhalten des Kernels zu beeinflussen. Ab da gab es die Möglichkeit 0 oder 1 in die Datei <em>/proc/sys/vm/overcommit_memory </em>zu schreiben. Die Funktion der beiden Variablen ist aber auch wieder sehr sinnbefreit:</p>
<ul>
<li>0 &#8211; default, &#8220;kein overcommit&#8221;, in Anführungszeichen weil es für den Kernel nur heist &#8220;denk ein bisschen nach bevor dus machst&#8221;</li>
<li>1 &#8211; immer overcommit, erklärt sich denke ich selbst</li>
</ul>
<p>Erst mit Kernel 2.5.30 kam endlich eine dritte Variable hinzu:</p>
<ul>
<li>2 &#8211; overcommit bis maximal Swap + <em>/proc/sys/vm/overcommit_ratio </em>% des RAM</li>
</ul>
<p>Damit ist es Möglich, den Kernel zu einer sinnvollen Speicherverwaltung zu überreden. Mit den im Dokument vorgeschlagenen Werten bekommen Programme immenroch genug Speicher reserviert, der Swap wächst weiterhin bei bedarf und das wichtigste: Es werden keine zufälligen Prozesse mehr abgeschossen. Stattdessen stirbt der Prozess der zuviel Arbeitsspeicher reservieren will weil er den nicht bekommt (oder ist sauber programmiert und reagiert entsprechend).</p>
<p>Die Lösung ist also folgende:</p>
<p>In der Datei <em>/etc/sysctl.conf</em> werden folgende Werte eingetragen:</p>
<pre class="brush:shell">vm.overcommit_memory = 2
vm.overcommit_ratio = 80</pre>
<p>Das wars auch schon. Seit ich diese Änderung eingetragen habe ist der oom-killer nicht wieder aufgetaucht.</p>
<p>Auch ein test mit den demoX.c Programmen aus dem Linux Kernel Dokument hat genau das dort beschriebene Bild gezeigt. Mit der Änderung führt das ausführen der Programme nie zum Systemcrash, lediglich die Programme bekomme nirgendwann keinen Speicher mehr und beenden sich selbst.</p>
<div class='footnotes'>
<div class='footnotedivider'></div>
<ol>
<li id='fn-581-1'><a href="http://pqxx.org/development/swapspace" target="_blank">http://pqxx.org/development/swapspace</a> <span class='footnotereverse'><a href='#fnref-581-1'>&#8617;</a></span></li>
<li id='fn-581-2'><a href="http://www.hskupin.info/2010/06/17/how-to-fix-the-oom-killer-crashe-under-linux/" target="_blank">http://www.hskupin.info/2010/06/17/how-to-fix-the-oom-killer-crashe-under-linux/</a> <span class='footnotereverse'><a href='#fnref-581-2'>&#8617;</a></span></li>
<li id='fn-581-3'><a href="http://www.hskupin.info/" target="_blank">http://www.hskupin.info/</a> <span class='footnotereverse'><a href='#fnref-581-3'>&#8617;</a></span></li>
<li id='fn-581-4'><a href="http://www.win.tue.nl/~aeb/linux/lk/lk.html" target="_blank">http://www.win.tue.nl/~aeb/linux/lk/lk.html</a> <span class='footnotereverse'><a href='#fnref-581-4'>&#8617;</a></span></li>
<li id='fn-581-5'><a href="http://www.win.tue.nl/~aeb/linux/lk/lk-9.html#ss9.6" target="_blank">http://www.win.tue.nl/~aeb/linux/lk/lk-9.html#ss9.6</a> <span class='footnotereverse'><a href='#fnref-581-5'>&#8617;</a></span></li>
</ol>
</div>
<p class="wp-flattr-button"></p> <p><a href="http://www.merls-blog.de/?flattrss_redirect&amp;id=581&amp;md5=c9b41c6c7763cc931627a68d75bfbf17" title="Flattr" target="_blank"><img src="http://www.merls-blog.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.merls-blog.de/2011/06/07/genug-swap-und-trotzdem-oom-killer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server-Stabilität</title>
		<link>http://www.merls-blog.de/2011/04/26/server-stabilitat/</link>
		<comments>http://www.merls-blog.de/2011/04/26/server-stabilitat/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 22:06:25 +0000</pubDate>
		<dc:creator>Merl</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Speicher voll]]></category>
		<category><![CDATA[Swap]]></category>
		<category><![CDATA[Swapspace]]></category>

		<guid isPermaLink="false">http://www.merls-blog.de/?p=517</guid>
		<description><![CDATA[Vor einiger Zeit habe ich mich ja schonmal über die sinnbefreiten Defaults von Virtualmin ausgelassen. Die Server-Stabilität ist seit den Änderungen zwar besser geworden, aber noch lange nicht befriedigend. Regelmäßig ist der Server nicht erreichbar und muß über das Webinterface meines Providers neu gestartet werden.

Im Verdacht habe ich Momentan Apache in Verbindung mit zu ...]]></description>
			<content:encoded><![CDATA[<p>Vor einiger Zeit habe ich mich ja schonmal über die <a title="IPv4, ClamAV, Virtualmin und sinnvolle Defaults" href="http://www.merls-blog.de/2010/09/26/ipv4-clamav-virtualmin-und-sinnvolle-defaults/">sinnbefreiten Defaults von Virtualmin</a> ausgelassen. Die Server-Stabilität ist seit den Änderungen zwar besser geworden, aber noch lange nicht befriedigend. Regelmäßig ist der Server nicht erreichbar und muß über das Webinterface meines Providers neu gestartet werden.</p>
<p>Im Verdacht habe ich Momentan Apache in Verbindung mit zu wenig Swap-Space. Die Swap Partition ist 1GB groß, ebenso wie der RAM. Ich habe schon vor längerem beobachtet, dass der Swap offensichtlich voll läuft kurz bevor der Server nicht mehr antwortet. Ein Script das von Cron aufgerufen wird und mir verschiedene statistische Daten per Mail liefert wenn es rechtzeitig den ausgehenden Speicher bemerkt, zeigt deutlich eine unheimliche Anzahl von Apache Prozessen.<span id="more-517"></span></p>
<p>Blöd nur, dass man in einen gemieteten Server nur sehr schlecht neue Hardware bekommt und bei einer nicht lvm-Installation das Ändern der Plattengrößen, nun sagen wir, problematisch ist. Nach dem letzten Absturz war mir das dann doch zu viel und ich war bereits soweit das Risiko in kauf zu nehmen. Dank Onkel Google habe ich dann aber ein nützliches Tool gefunden, dass genau solche Situation wie sie sich mir stellen abzupuffern hilft: Swapspace<sup class='footnote'><a href='#fn-517-1' id='fnref-517-1'>1</a></sup>.</p>
<p>Swapspace ist ein Daemon, der den Speicher überwacht und wenn dieser droht auszugehen dynamisch neue Swap-Dateien erstellt und wieder löscht. Das ganze macht er dann noch dazu sehr intelligent, so dass keine überflüssigen Swap-Dateien herumfliegen.</p>
<p>Da der Server im Regelfall den Swap nicht braucht kann ich zum jetzigen Zeitpunkt noch nicht sagen, ob Swapspace die Probleme löst. Wenn ich mit meinem Verdacht recht habe, gehe ich aber fest davon aus.</p>
<div class='footnotes'>
<div class='footnotedivider'></div>
<ol>
<li id='fn-517-1'><a title="Swapspace" href="http://pqxx.org/development/swapspace" target="_blank">http://pqxx.org/development/swapspace</a> <span class='footnotereverse'><a href='#fnref-517-1'>&#8617;</a></span></li>
</ol>
</div>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.merls-blog.de/2011/04/26/server-stabilitat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPv4, ClamAV, Virtualmin und sinnvolle Defaults</title>
		<link>http://www.merls-blog.de/2010/09/26/ipv4-clamav-virtualmin-und-sinnvolle-defaults/</link>
		<comments>http://www.merls-blog.de/2010/09/26/ipv4-clamav-virtualmin-und-sinnvolle-defaults/#comments</comments>
		<pubDate>Sun, 26 Sep 2010 11:12:34 +0000</pubDate>
		<dc:creator>Merl</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bind9]]></category>
		<category><![CDATA[ClamAV]]></category>
		<category><![CDATA[IPv4]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[Syntaxhighlight]]></category>
		<category><![CDATA[Virtualmin]]></category>

		<guid isPermaLink="false">http://www.merls-blog.de/?p=464</guid>
		<description><![CDATA[Viel gibts zu dem Thema eigentlich nicht zu sagen, scheinbar beißen sich die beiden Begriffe.

Jedenfalls ist gestern Abend mein Server kaum erreichbar gewesen, nach einigen Neustarts kam ich dann erstens darauf, dass sämtliche Services neben IPv4 Abfragen auch IPv6 abfragen versucht haben, was auf einem nur mit IPv4 angebundenen Server wenig Sinn macht, nur ...]]></description>
			<content:encoded><![CDATA[<p>Viel gibts zu dem Thema eigentlich nicht zu sagen, scheinbar beißen sich die beiden Begriffe.</p>
<p>Jedenfalls ist gestern Abend mein Server kaum erreichbar gewesen, nach einigen Neustarts kam ich dann erstens darauf, dass sämtliche Services neben IPv4 Abfragen auch IPv6 abfragen <em>versucht </em>haben, was auf einem nur mit IPv4 angebundenen Server wenig Sinn macht, nur zu unnötigen Timeouts führt und die Logs mit Fehlermeldungen voll haut.</p>
<p><span id="more-464"></span>Entsprechend habe ich dann zuerst mal Bind9, Apache und Postfix auf reinen IPv4 Betrieb umgestellt:</p>
<p><span style="text-decoration: underline;"><em>Bind9:</em></span></p>
<p>in der Datei <em>/etc/defaults/bind9</em></p>
<pre class="brush:shell">OPTIONS="-u bind"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes</pre>
<p>wird zu:</p>
<pre class="brush:shell">OPTIONS="-4 -u bind"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes</pre>
<p><span style="text-decoration: underline;"><em>Apache:</em></span></p>
<p>in allen Dateien unter <em>/etc/apache2/sites-available/</em></p>
<pre class="brush:shell">Listen 80 #Mischbetrieb</pre>
<p>wird geändert in die Form</p>
<pre class="brush:shell">Listen 0.0.0.0:80
Listen 192.170.2.1:80</pre>
<p>Dabei natürlich die richtige IP dabei eingeben.</p>
<p>Dabei hab ich auch gleich mal den von Apache jedesmal beim Start angemahnten mischbetrieb von Wildcard und festen Virtualhosts aufgelöst, sprich alle * durch IP ersetzt.</p>
<p><span style="text-decoration: underline;"><em>Postfix:</em></span></p>
<p>In der <em>/etc/postfix/main.cf </em></p>
<pre class="brush:shell">inet_protocol = ipv4</pre>
<p>Nachdem ich das alles umgestellt hatte, waren zumindest die Logs mal sicher vor IPv6 Fehlermeldungen und es gab weniger Timeouts. Die CPU-Load ging aber immernoch auf 100%. Dabei fiel mir auf, dass ständig <tt>Spamassasin</tt> und <tt>clamscan</tt> liefen. Also mal ein wenig in den Virtualmineinstellungen geschmöckert.</p>
<p>Und siehe da: unter <tt>Email Messages &gt; Spam and Virus scanning</tt> findet sich die Option <tt>Virus scanning programm</tt>, die per default auf <tt>Standalone scanner (clamscan)</tt> steht. Liest man sich den Hilfetext durch, erfährt man, dass der immer funktioniert. Nebenher läuft aber auch per default noch der <tt>clamdscan</tt> als Prozess, der natürlich nix zu tun hat und eigentlich schneller wäre.</p>
<p>Also Scanner auf <tt>clamdscan</tt> umgestellt, oh wunder, keine <tt>clamscan</tt> Prozesse mehr. Und die CPU-Load ist auch wieder in nem normalen bereich und hat ne ordentliche idle-time.</p>
<p>Das werd ich jetzt mal n paar Tage beobachten und mir dann überlegen, ob ich den Scanner laufen lasse oder ganz abschalte um noch etwas mehr Leistung freizugeben. Im Moment siehts ganz gut aus, der Deamon ist doch erheblich performanter als für jeden Scan n eigenen Prozess zu starten.</p>
<p><span style="text-decoration: underline;"><strong>Plugin Update:</strong></span></p>
<p>Wärend dem Schreiben dieses Artikels habe ich das Plugin für den Syntaxhighlighter auf <a href="http://www.phodana.de/wordpress/wp-plugin-syntax-highlighter-compress/">SyntaxHighlighter ComPress</a> von <a href="http://www.phodana.de/">Andre Gärtner</a> geändert.<br />
Das hat unter anderem den Vorteil, dass es die benötigten JavaScript  Dateien dynamisch einbindet und damit weniger Ladezeit benötigt.  Außerdem nutzt es das aktuelle SyntaxHighlighter JS, das für  Copy&amp;Paste kein Flash mehr benötigt.</p>
<p><span style="text-decoration: underline;"><strong>Links:</strong></span></p>
<ul>
<li><a title="test" href="http://ubuntu-tutorials.com/2009/03/21/configure-bind-9-for-ipv4-or-ipv6-only/">Bind9 IPv4 only</a></li>
<li><a href="http://httpd.apache.org/docs/2.0/bind.html#ipv6">Apache IPv6 Considarations</a></li>
<li><a href="http://www.webmin.com/virtualmin.html">Virtualmin</a></li>
<li><a href="http://www.phodana.de/wordpress/wp-plugin-syntax-highlighter-compress/">SyntaxHighlighter ComPress</a></li>
</ul>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.merls-blog.de/2010/09/26/ipv4-clamav-virtualmin-und-sinnvolle-defaults/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP safe_mode in CONFIXX abschalten</title>
		<link>http://www.merls-blog.de/2008/03/07/php-safe_mode-in-confixx-abschalten/</link>
		<comments>http://www.merls-blog.de/2008/03/07/php-safe_mode-in-confixx-abschalten/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 16:41:29 +0000</pubDate>
		<dc:creator>Merl</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Confixx]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://wp.shelltec.de/index.php/2008/03/07/php-safe_mode-in-confixx-abschalten/</guid>
		<description><![CDATA[Da mich aufgeregt hat, daß ich die ganze Zeit manuel die Ordner für die Galerie erstellen mußte hab ich mal kurz nachgegooglet:


httpd_spezial:

Directory "/var/www/web1/html"&#62;
Options +SymLinksIfOwnerMatch
php_admin_value safe_mode off
php_admin_flag safe_mode off
php_admin_value open_basedir none
&#60;/Directory&#62;]]></description>
			<content:encoded><![CDATA[<p>Da mich aufgeregt hat, daß ich die ganze Zeit manuel die Ordner für die Galerie erstellen mußte hab ich mal kurz nachgegooglet:<br />
<span id="more-19"></span></p>
<p>httpd_spezial:</p>
<p><code>Directory "/var/www/web1/html"&gt;<br />
Options +SymLinksIfOwnerMatch<br />
php_admin_value safe_mode off<br />
php_admin_flag safe_mode off<br />
php_admin_value open_basedir none<br />
&lt;/Directory&gt;</code></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.merls-blog.de/2008/03/07/php-safe_mode-in-confixx-abschalten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

