<?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>SysEleven - Hosting für Fortgeschrittene &#187; RAM</title>
	<atom:link href="http://www.syseleven.de/tag/ram/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.syseleven.de</link>
	<description></description>
	<lastBuildDate>Tue, 24 Jan 2012 16:33:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>PHP RAM-Verbrauch in Logfile protokollieren</title>
		<link>http://www.syseleven.de/blog/1820/php-ram-verbrauch-in-logfile-protokollieren/</link>
		<comments>http://www.syseleven.de/blog/1820/php-ram-verbrauch-in-logfile-protokollieren/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 12:18:46 +0000</pubDate>
		<dc:creator>Thomas Lohner</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Logfile]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[Tipps]]></category>

		<guid isPermaLink="false">http://www.syseleven.de/?p=1820</guid>
		<description><![CDATA[So können Sie den RAM Verbrauch einer PHP Applikation im Apache Logfile protokollieren.]]></description>
			<content:encoded><![CDATA[<p>
Beim Debugging eines aktuellen Problems, fiel uns auf, dass PHP Prozesse auf dem betroffenen Drupal Application Server ungewöhnlich viel Arbeitsspeicher verschlungen haben. Üblicherweise rechnen wir mit zwischen 20 und 60  MB pro Apache (PHP) Prozess. Hier fanden sich Ausreißer mit teilweise über 200 MB.
</p>
<p><br/><br />
<img src="http://www.syseleven.de/wp-content/uploads/2011/07/Prozessliste.gif" alt="" title="Prozessliste" width="430" height="144" class="aligncenter size-full wp-image-1821" /><br />
<br/></p>
<p><h1>Zuordnung zu URLs</h1>
<p>In der Prozessliste fehlt uns jedoch eine entscheidende Information: Welche URL hat diesen Prozess ausgelöst, der außergewöhnlich viel Arbeitsspeicher verbraucht? Was wir suchen ist eine Zuordnung zwischen dem Prozess und der im Browser aufgerufenen URL. Da alle Zugriffe auf die Webseite im Apache Logfile protokoliert werden, liegt Nahe an dieser Stelle anzusetzen.
</p>
<p>
Unser Ziel ist also, innerhalb der Applikation den maximal verbrauchten Arbeitsspeicher zu ermitteln und den Wert an Apache zu übergeben, damit dieser im Logfile protokoliert werden kann. Wir nutzen hierfür die beiden PHP Funktionen memory_get_peak_usage() und apache_note():<br />
<code><br />
# get the maximum ram<br />
$debug_ram = memory_get_peak_usage();</p>
<p># make it visible to apache<br />
apache_note("x-php-ram", $debug_ram);<br />
</code>
</p>
<p><h1>Implementierung in die Applikation</h1>
<p>Wir wollen natürlich nicht in der Applikation suchen, an wie vielen Stellen wir den Code einfügen müssen, damit wir bei jedem Aufruf den RAM-Verbrauch messen können. Für unsere Debugzwecke machen wir uns eine globale Funktion zu nutze: In der <strong>php.ini</strong> können wir definieren, dass am Ende von jedem PHP Aufruf zusätzlicher Code ausgeführt wird:
</p>
<p><code><br />
; Automatically add files<br />
;auto_prepend_file =<br />
auto_append_file = /var/www/x-php-ram.php<br />
</code></p>
<p><h1>Implementierung in Apache</h1>
<p>Um die Werte auch wirklich im Logfile zu sehen, verändern wir das Logfileformat in Apache:</p>
<p><code><br />
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" PHP-RAM: %{x-php-ram}n" combined_memory</p>
<p>CustomLog /var/log/apache2/access.log combined_memory<br />
</code>
</p>
<p><h1>Ergebnis</h1>
<p>Jetzt sehen wir wie viel Arbeitsspeicher jeder einzelne Aufruf einer Webseite verbraucht hat:
</p>
<p><code><br />
/ PHP-RAM: 91106128<br />
/fotos/deutschland-besiegt-kanada PHP-RAM: 110486240<br />
/page/hitfinder PHP-RAM: 81736024<br />
/fotos/wetten-dass-abschied PHP-RAM: 96412776<br />
/shows/schreckliche-urlaubsmode PHP-RAM: 98604800<br />
/musik PHP-RAM: 95526032<br />
</code></p>
<p>
In diesem konkreten Fall hat uns diese Debug-Information leider nicht weitergeholfen. Es gab keine Ausreißer, im Grunde haben alle Aufrufe ungewöhnlich viel Arbeitsspeicher verbraucht. In dieser Drupal-Installation sind sehr viele Module installiert, so dass tatsächlich viel RAM verbraucht wird. Durch den Einsatz von <a href="http://pecl.php.net/package/APC">APC</a> konnten wir letztendlich den RAM-Verbrauch auf die Hälfte reduzieren und das Problem entschärfen. Dazu aber mehr in einem anderen Blogpost&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.syseleven.de/blog/1820/php-ram-verbrauch-in-logfile-protokollieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soeben eingetroffen: 256 GByte RAM</title>
		<link>http://www.syseleven.de/blog/591/soeben-eingetroffen-256-gbyte-ram/</link>
		<comments>http://www.syseleven.de/blog/591/soeben-eingetroffen-256-gbyte-ram/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 09:27:39 +0000</pubDate>
		<dc:creator>Marc Korthaus</dc:creator>
				<category><![CDATA[Ankündigungen]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Neues]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[Nehalem]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://www.syseleven.de/?p=591</guid>
		<description><![CDATA[Eine Lieferung, wie auch wir Sie nicht wöchentlich haben: 32x 8 GByte Kits für unsere Blades – pünktlich zum Umzug unserer Server in den neuen Standort innerhalb des Rechenzentrums Lützowstraße.]]></description>
			<content:encoded><![CDATA[<div id="attachment_599" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-599" title="CIMG2990-blog" src="http://www.syseleven.de/wp-content/uploads/2009/07/CIMG2990-blog2-300x225.jpg" alt="256 GByte RAM, frisch geliefert" width="300" height="225" /><p class="wp-caption-text">256 GByte RAM, frisch geliefert</p></div>
<p>Eine Lieferung, wie auch wir Sie nicht wöchentlich haben: 32x 8 GByte Kits für unsere Blades sind soeben hier eingetroffen &#8211; pünktlich zum Umzug unserer Server in den neuen Standort innerhalb des Rechenzentrums Lützowstraße. Die 256 GByte (technisch korrekt ausgedrückt 64 Riegel a 4 GByte, welche paarweise verbaut werden) werden in Maschinen mit 16 und 32 GByte RAM verbaut und dienen &#8211; wie immer bei SysEleven &#8211; der Bereitstellung von genügend Resourcen für die in der Regel virtualisierten Server unserer Kunden.</p>
<p>Übrigens: Der Hardwarepark von SysEleven kann nunmehr auf 768 GByte RAM, 168 Prozessorkerne sowie 436 GByte SSD-Cache und mehr als 100 Terabyte Storage zurückgreifen &#8211; jeder unserer Server hat also im Schnitt 4,5 GByte RAM je Kerne. Tendenziell wird sich das Verhältnis von RAM zu Kern mit dem Deployment der (bestellten) Nehalem-basierten Servern verändern: Bei gleicher RAM-Geschwindigkeit (1333 oder 1066 MHz Busgeschwindigkeit) sind ohne Tempoverlust 44 GByte &#8211; also 5,5 GByte je Kern möglich &#8211; zumindest wenn man auf die &#8220;günstigeren&#8221; (und leider immer noch doppelt so teuren) 4 GByte-RAM-Module setzen will.</p>
<p style="text-align: center; ">
]]></content:encoded>
			<wfw:commentRss>http://www.syseleven.de/blog/591/soeben-eingetroffen-256-gbyte-ram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

