<?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>Sonassi Hosting</title>
	<atom:link href="http://www.sonassihosting.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sonassihosting.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 18 Sep 2011 12:02:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Magento Performance Optimization With Varnish Cache 4</title>
		<link>http://www.sonassihosting.com/blog/magento-performance/magento-performance-optimization-with-varnish-cache-4/</link>
		<comments>http://www.sonassihosting.com/blog/magento-performance/magento-performance-optimization-with-varnish-cache-4/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 15:44:26 +0000</pubDate>
		<dc:creator>Site Administrator</dc:creator>
				<category><![CDATA[Magento Performance]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=170</guid>
		<description><![CDATA[This post aims to further the development of some ideas that extend the work of Kalenyuk&#8217;s in a blog post called Magento performance optimization with Varnish cache and Mario&#8217;s in a blog post called Magento Performance Optimization With Varnish Cache 3 We have tested the above module, and at a basic level it works well. [...]]]></description>
			<content:encoded><![CDATA[<p>This post aims to further the development of some ideas that extend the work of Kalenyuk&#8217;s in a blog post called <a href="http://www.kalenyuk.com.ua/magento-performance-optimization-with-varnish-cache-47.html" rel="nofollow">Magento performance optimization with Varnish cache</a> and Mario&#8217;s in a blog post called <a href="http://moprea.ro/2011/may/6/magento-performance-optimization-varnish-cache-3/">Magento Performance Optimization With Varnish Cache 3</a></p>
<p>We have tested the above module, and at a basic level it works well. There are several enhancements that we have made to the VCL to obtain better performance, compliance and compatibility. But this post aims to help further develop the module by fixing a critical bug.</p>
<p>Using the above extension, it is not possible to use the catalogue listing &#8220;add-to-cart&#8221; URL encoded link (versus the standard POST form on the product page) when no cookies have been created. It can however be changed to allow for exceptions such as these. These changes are not yet production tested, but give a scalable workaround to certain modules not functioning as they should. It essentially circumvents the cookie detection built into Magento, so it does have its inherent risks (ie. doesn&#8217;t alert people to the fact they don&#8217;t have cookies enabled!).</p>
<p>The issue only occurs if no cookies at all have been created.</p>
<p>Ie. If you were to go to the my account log in page, then remove all cookies, then attempt to log in, you&#8217;ll get the same error.</p>
<p>Ie. If you landed on the homepage (without visiting the site before, ie. having cleared all your cookies), and clicked add to basket, you&#8217;ll get the same error.</p>
<p>Further modules, controllers and specific actions can be added to exceptions simply by adding them to the <code><exceptions/></code> tag in <code>config.xml</code></p>
<p>In <code>etc/config.xml</code>, add</p>
<pre class="brush:xml">
    <varnish>
        <exceptions>
            <checkout>
              <action_name>add</action_name>
              <controller_name>cart</controller_name>
              <method>redirect</method>
            </checkout>
            <customer>
              <action_name>loginPost</action_name>
              <controller_name>account</controller_name>
              <method>forward</method>
            </customer>
        </exceptions>
    </varnish>

    <global>
        <events>
            ...
            <controller_action_predispatch>
                <observers>
                    <varnish>
                        <type>singleton</type>
                        <class>varnish/observer</class>
                        <method>preDispatch</method>
                    </varnish>
                </observers>
            </controller_action_predispatch>
</pre>
<p>In <code>Model/Observer.php</code>, add</p>
<pre class="brush:php">
   public function preDispatch(Varien_Event_Observer $observer)
    {
      $helper = Mage::helper('varnish/cacheable'); /* @var $helper Magneto_Varnish_Model_Cacheable */

      if ($helper->getCookie()->get())
        return $this;

      if ($helper->checkExceptions()) {
        $helper->turnOffVarnishCache();
      }

      return $this;
    }
</pre>
<p>In <code>Helper/Cacheable.php</code>, add</p>
<pre class="brush:php">

   private $_exceptions = false;

   public function forward($request, $module, $action, $controller, $params = array())
    {

        $request->setParam('nocookie', true);
        $request->initForward();

        if (!is_null($params)) {
            $request->setParams($params);
        }

        if (!is_null($controller)) {
            $request->setControllerName($controller);

            // Module should only be reset if controller has been specified
            if (!is_null($module)) {
                $request->setModuleName($module);
            }
        }

        $request->setActionName($action)
            ->setDispatched(false);

    }

    public function getExceptions()
    {
      if (!$this->_exceptions)
        return $this->_exceptions = (array)Mage::app()->getConfig()->getNode('varnish')->exceptions;

      return $this->_exceptions;
    }

    public function checkExceptions()
    {
        $forwardInfo = array();
        $endParams = '';

        $_request = Mage::app()->getFrontController()->getRequest();

        if ($_request->getActionName() != "noCookies")
          return false;

        /*
         * Magento 1.3 doesn't support getBeforeForwardInfo() or advanced forwarding methods
         * that 1.4 does, so its functionality is going to be somewhat crippled.
         * Solution: Upgrade to 1.4!
         */

        if (version_compare(Mage::getVersion(), '1.4', '<')) {
          #Mage::getSingleton('customer/session')->setNoLoop(1);
          #header('Location: '.$_request->getPathInfo().'?'.htmlspecialchars(SID));
          #exit();

          $requestUri = $_request->getRequestUri();
          $requestUriBits = explode("/", $requestUri);

          $forwardInfo['module_name'] = $requestUriBits[1];
          $forwardInfo['controller_name'] = $requestUriBits[2];
          $forwardInfo['action_name'] = $requestUriBits[3];
          $forwardInfo['params'] = $_request->getParams();

        } else {
          $forwardInfo = $_request->getBeforeForwardInfo();
        }

        $_exceptions = $this->getExceptions();

        if (!array_key_exists('module_name',$forwardInfo))
          return false;

        /*
         * If the session var no_loop is set, it means its tried this once before
         * which means the customer must not have cookies enabled - we need to let
         * Magento display its error if that is the case.
         */ 

        if (Mage::getSingleton('customer/session')->getNoLoop()) {
          return false;
        }

        if (array_key_exists($forwardInfo['module_name'], $_exceptions)) {
            if ((string)$_exceptions[$forwardInfo['module_name']]->action_name == $forwardInfo['action_name'] &#038;&#038;
                (string)$_exceptions[$forwardInfo['module_name']]->controller_name == $forwardInfo['controller_name']) {

              Mage::getSingleton('customer/session')->setNoLoop(1);

              /*
               * We're using a crude header redirect to re-try the session now a cookie
               * has been created. If it fails, the SID is passed - to prevent looping
               * This method won't work with account login, as it doesn't support GET
               * for user credentials.
               */

              if ($_exceptions[$forwardInfo['module_name']]->method == 'redirect') {
                $path = $forwardInfo['module_name'] .'/'. $forwardInfo['controller_name'] .'/'. $forwardInfo['action_name'];

                if (array_key_exists('options', $forwardInfo['params'])) {
                  foreach ($forwardInfo['params']['options'] as $optionId => $value) {
                    $endParams .= '&#038;options['.$optionId.']='.$value;
                  }
                  unset($forwardInfo['params']['options']);
                }                

                $fields = $this->array_flatten($forwardInfo['params']);
                header('Location: '.Mage::getUrl($path, $fields).'?'.htmlspecialchars(SID).$endParams);
                exit();
                #Mage::app()->getResponse()->setRedirect(Mage::getUrl($path, $fields));
              } else {
                $this->forward($_request, $forwardInfo['module_name'], $forwardInfo['action_name'], $forwardInfo['controller_name'], $forwardInfo['params']);
              }
              return true;
            }
        }

        return false;
    }

    public function array_flatten( $array ) {
      $arr = array();
      function flatten( $item, $key, $flattened ) {
        $flattened[$key] = $item;
      };
      array_walk_recursive($array, 'flatten', &#038;$arr);
      return $arr;
    }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/magento-performance/magento-performance-optimization-with-varnish-cache-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dedicated server IPMI Access</title>
		<link>http://www.sonassihosting.com/blog/support/dedicated-server-ipmi-access/</link>
		<comments>http://www.sonassihosting.com/blog/support/dedicated-server-ipmi-access/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 15:08:14 +0000</pubDate>
		<dc:creator>Site Administrator</dc:creator>
				<category><![CDATA[FAQs]]></category>
		<category><![CDATA[Support]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=163</guid>
		<description><![CDATA[Accessing your servers IPMI interface requires you to set up a simple VPN connection to our secure IPMI management network. You can use the guide (right) to help you create the connection required. VPN Type: PPTP VPN Host: vpn2.sonassihosting.com Don&#8217;t have an account? If you do not have an IPMI VPN account yet, please get [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sonassihosting.com/blog/wp-content/uploads/2011/07/IPMI_Access_Guide_v1.pdf" class="right"><img src="http://www.sonassihosting.com/blog/wp-content/uploads/2011/07/download_ipmi_vpn_guide.png" alt="" title="download_ipmi_vpn_guide" width="95" height="150" class="alignright size-full wp-image-167" /></a></p>
<p>Accessing your servers IPMI interface requires you to set up a simple VPN connection to our secure IPMI management network. You can use the guide (right) to help you create the connection required.<br />
<code><br />
VPN Type: PPTP<br />
VPN Host: vpn2.sonassihosting.com<br />
</code><br />
<strong>Don&#8217;t have an account?</strong></p>
<p>If you do not have an IPMI VPN account yet, please get in touch with the support team at <a href="http://theclientarea.info">theclientarea.info</a> to request your IPMI VPN access details.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/support/dedicated-server-ipmi-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hosting a Magento Groupon campaign</title>
		<link>http://www.sonassihosting.com/blog/you-me-and-sonassi/hosting-a-magento-groupon-campaign/</link>
		<comments>http://www.sonassihosting.com/blog/you-me-and-sonassi/hosting-a-magento-groupon-campaign/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 18:52:29 +0000</pubDate>
		<dc:creator>Site Administrator</dc:creator>
				<category><![CDATA[Magento Performance]]></category>
		<category><![CDATA[You, me and sonassi]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[groupon magento]]></category>
		<category><![CDATA[magento cluster]]></category>
		<category><![CDATA[magento groupon]]></category>
		<category><![CDATA[magento microcloud]]></category>
		<category><![CDATA[microcloud]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=132</guid>
		<description><![CDATA[Appears to be all in a days work for Sonassi Hosting. Recently we were challenged by one of our dedicated hosting customers, DirectSight.co.uk, to implement a temporary platform to support up to 1 million unique visitors. Whilst perhaps not a frequent request, with our core-competence lying in dedicated Magento hosting, it was something we felt [...]]]></description>
			<content:encoded><![CDATA[<p><em>Appears to be all in a days work for Sonassi Hosting. </em></p>
<p>Recently we were challenged by one of our dedicated hosting customers, <a href="http://www.directsight.co.uk" title="DirectSight">DirectSight.co.uk</a>, to implement a temporary platform to support up to 1 million unique visitors. Whilst perhaps not a frequent request, with our core-competence lying in <a href="http://www.sonassihosting.com/dedicated-magento-hosting.html" title="dedicated Magento hosting">dedicated Magento hosting</a>, it was something we felt confident in being able to deliver. As a company, we have offered specialised, dedicated Magento server solutions for just over 2 years now &#8211; and this wealth of knowledge would prove worthwhile for the upcoming mammoth Groupon traffic. </p>
<h3>1 Million unique visitors, 1 Magento cloud please</h3>
<p>So with the challenge set, at quite short notice, we were able to draw up a simple redundant, clustered solution; very similar to that used in our Magento cluster. The cluster consisted of 10 active servers with 3 hot-standby and 2 cold-standby systems; we dubbed it <strong>the Magento MicroCloud</strong>.</p>
<p><img src="http://www.sonassihosting.com/blog/wp-content/uploads/2011/07/dsmc.png" alt="" title="Magento MicroCloud" class="alignnone wp-image-136" /></p>
<h3>1 day in &#8230; some serious traffic</h3>
<p>Being a national promotion, the <a href="http://www.groupon.co.uk/deals/national-deal/DirectSight/527160" title="DirectSight Groupon promotion">DirectSight Groupon promotion</a> was a large scale, highly featured campaign &#8211; <em>even featured on <a href="http://www.moneysavingexpert.com/deals/cheap-glasses-discounts">Martins Money Tips</a></em>. We expected a huge volume of traffic and boy did we, a sustained 60Mbits p/s. To put this into perspective, a typical store with around 3,000 visitors per day usually consumes ~0.1Mbits p/s.</p>
<p>The promotion is still running (at the time of this being written), but performance figures so far really do highlight how good we really are at hosting Magento stores, and more to the point &#8211; hosting a high priority, high demand Magento based promotion.</p>
<h3>The target</h3>
<p><img src="http://www.sonassihosting.com/blog/wp-content/uploads/2011/07/groupon-300x132.jpg" alt="" title="Groupon" width="200" height="88" class="right alignright size-medium wp-image-157" /></p>
<p><strong>Requirements for the configuration were described as:</strong></p>
<p>1.	Support for 250k-500k unique visits per day<br />
2.	Average page views of 8 pages<br />
3.	Average time on site 6 minutes</p>
<p><strong>Based on this we estimate:</strong></p>
<p>1.	1600GB bandwidth usage per day (500k visitors * 8 avg. pages viewed * 0.4MB avg. page size)<br />
2.	60MBit connection commitment per day<br />
3.	100k peak visitors in a 1 hour period<br />
   a.	Support for 10,000 concurrent sessions<br />
   b.	Support for 300 rps</p>
<h3>and the outcome &#8230;</h3>
<p><a href="http://www.sonassihosting.com/blog/wp-content/uploads/2011/07/if_bond0-day.png"><img src="http://www.sonassihosting.com/blog/wp-content/uploads/2011/07/if_bond0-day-300x169.png" alt="" title="Groupon Bandwidth on Magento" width="300" height="169" class="alignright right size-medium wp-image-143" style="margin-left:30px;" /></a></p>
<p>To give you a taster &#8211; the right image shows the output from the loadbalancer&#8217;s external network interfaces. Even under this massive influx of traffic, the <strong>Magento MicroCloud</strong> performed brilliantly and faultlessly. </p>
<p><br class="clear" /></p>
<p><a href="http://www.sonassihosting.com/blog/wp-content/uploads/2011/07/load1-day.png"><img src="http://www.sonassihosting.com/blog/wp-content/uploads/2011/07/load1-day-300x249.png" alt="" title="MicroCloud Load averages" width="300" height="249" class="alignleft size-medium wp-image-148 left" style="margin-right:30px;" /></a></p>
<p>If anything, the load averages (left) highlight how little stress the campaign placed on the available processing capacity of the MicroCloud. </p>
<p>We estimate that the traffic surge used between 15-20% of the available resource we set up. Our initial specification for the project was to meet twice the required load and provide plenty of overhead. </p>
<p><br class="clear" /></p>
<p><img src="http://www.sonassihosting.com/blog/wp-content/uploads/2011/07/groupon_directsight_ga1.png" alt="" title="Groupon DirectSight Analytics" width="595" height="520" class="alignright size-full wp-image-182" /></p>
<p>By the end of the promotion, it had peaked at 55,000 unique visitors on Wednesday 13th July, with a total of 10 page views per customer; resulting in just under 600,000 page views. Given the low load on the platform, it means that with real-world traffic, it should have been suitable for up to around 3,833,000 page views &#8211; which is just short of what we believed the solution could deliver, 4,000,000 pageviews.</p>
<p></p>
<p>We have been delighted overall and now are looking to offer this type of high demand hosting for such short-term promotions as a real offering.</p>
<h3>Interested?</h3>
<p>If you are interested in hosting a <strong>Groupon promotion</strong> or even just looking for specialised dedicated hosting for your Magento store &#8211; then don&#8217;t hesitate to <a href="/contacts" title="Get in touch">get in touch!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/you-me-and-sonassi/hosting-a-magento-groupon-campaign/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheduled Maintenance [20/05/2011]</title>
		<link>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-20052011/</link>
		<comments>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-20052011/#comments</comments>
		<pubDate>Mon, 09 May 2011 14:39:14 +0000</pubDate>
		<dc:creator>Site Administrator</dc:creator>
				<category><![CDATA[Network status]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=126</guid>
		<description><![CDATA[This work has been carried out and no issues were encountered. When 20th May 2011 22:00pm until 21st May 2011 04:00am Reason Upgrade firewalls to latest firmware, provided increased security and stability. Applies to the following firewalls: Zyxel USG 100 Zyxel USG 200 Zyxel USG 300 Zyxel USG 1000 Zyxel USG 2000 Who this affects [...]]]></description>
			<content:encoded><![CDATA[<p class="mag_alert">
This work has been carried out and no issues were encountered.
</p>
<div class="disabled">
<h4>When</h4>
<p>20th May 2011 22:00pm until 21st May 2011 04:00am</p>
<h4>Reason</h4>
<p>Upgrade firewalls to latest firmware, provided increased security and stability. Applies to the following firewalls:</p>
<p>Zyxel USG 100<br />
Zyxel USG 200<br />
Zyxel USG 300<br />
Zyxel USG 1000<br />
Zyxel USG 2000</p>
<h4>Who this affects</h4>
<p>All dedicated Zyxel firewall customers will be affected.<br />
Shared hosting customers may be affected.<br />
Dedicated server customers may be affected.</p>
<p>We appreciate your co-operation during this maintenance window.
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-20052011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheduled Maintenance [03/06/2011]</title>
		<link>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-03062011/</link>
		<comments>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-03062011/#comments</comments>
		<pubDate>Mon, 09 May 2011 14:35:07 +0000</pubDate>
		<dc:creator>Site Administrator</dc:creator>
				<category><![CDATA[Network status]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=121</guid>
		<description><![CDATA[This work has been carried out and no issues were encountered. When 3rd June 2011 10:00am until 5th June 2011 10:00am Reason De-commissioning and migration of entire net0 IP range. net0 comprises of an old server infrastructure that is being upgraded with faster, more powerful equipment. The servers within net0 use legacy IP address space [...]]]></description>
			<content:encoded><![CDATA[<p class="mag_alert">
This work has been carried out and no issues were encountered.
</p>
<div class="disabled">
<h4>When</h4>
<p>3rd June 2011 10:00am until 5th June 2011 10:00am</p>
<h4>Reason</h4>
<p>De-commissioning and migration of entire net0 IP range. net0 comprises of an old server infrastructure that is being upgraded with faster, more powerful equipment. The servers within net0 use legacy IP address space outside of our core routing which will cease to be routed on <strong>04/07/2011</strong>. Each IP in net0 will be mapped to a new IP, any customers using Sonassi Hosting for their nameservers will have their details automatically updated during migration, customers using their own DNS will need to update their DNS records accordingly. </p>
<p>After the migration, we will continue to route the old IP&#8217;s to their respective new IP&#8217;s transparently for 1 month. After this period, the old IP&#8217;s will cease to be routed and traffic will no longer be routed.</p>
<p>ALL net0 customers will be alerted within the next 7 days as to their new IP address.</p>
<p>During the migration, there will be downtime incurred, whilst we hope this to be minimal, the scale of the migration is large and open to possible complication; hence a maintenance window of 48 hours has been assigned. ALL services are likely to be unavailable/intermittent/disrupted during this window.</p>
<p>The following common system IP&#8217;s will be follows:</p>
<p><strong>MySQL server IP</strong>: 92.42.124.69<br />
<strong>Webmail IP</strong>: 92.42.124.70<br />
<strong>SMTP server IP</strong>: 92.42.124.71<br />
<strong>IMAP/POP3 server IP</strong>: 92.42.124.72</p>
<h4>Who this affects</h4>
<p>All net0 shared hosting customers will be affected.<br />
Dedicated server customers will NOT be affected.</p>
<p>We appreciate your co-operation during this maintenance window.
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-03062011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheduled maintenance [02/2010]</title>
		<link>http://www.sonassihosting.com/blog/uncategorized/scheduled-maintenance-022010/</link>
		<comments>http://www.sonassihosting.com/blog/uncategorized/scheduled-maintenance-022010/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 18:31:03 +0000</pubDate>
		<dc:creator>Site Administrator</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[#sonassinetwor]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=95</guid>
		<description><![CDATA[This work has been carried out and no issues were encountered. When 19th February 2011 01:00am until 19th February 2011 6:00am Reason There is essential maintenance scheduled on core routing infrastructure. Who this affects All dedicated server customers will be directly affected. Shared hosting customers will NOT be affected. We appreciate your co-operation during this [...]]]></description>
			<content:encoded><![CDATA[<p class="mag_alert">
This work has been carried out and no issues were encountered.
</p>
<div class="disabled">
<h4>When</h4>
<p>19th February 2011 01:00am until 19th February 2011 6:00am</p>
<h4>Reason</h4>
<p>There is essential maintenance scheduled on core routing infrastructure. </p>
<h4>Who this affects</h4>
<p>All dedicated server customers will be directly affected.<br />
Shared hosting customers will NOT be affected.</p>
<p>We appreciate your co-operation during this maintenance window.
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/uncategorized/scheduled-maintenance-022010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheduled maintenance [12/2010]</title>
		<link>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-112010-2/</link>
		<comments>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-112010-2/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 17:45:08 +0000</pubDate>
		<dc:creator>Site Administrator</dc:creator>
				<category><![CDATA[Network status]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=90</guid>
		<description><![CDATA[This work has been carried out and no issues were encountered. Due to adverse weather conditions, urgent electrical repairs are due in the building housing the monitoring and reporting systems. Please be aware that between: 2th December 2010 08:00am until 2nd December 2010 10:00pm There is essential maintenance scheduled on electrical systems responsible for the [...]]]></description>
			<content:encoded><![CDATA[<p class="mag_alert">
This work has been carried out and no issues were encountered.
</p>
<div class="disabled">
Due to adverse weather conditions, urgent electrical repairs are due in the building housing the monitoring and reporting systems. </p>
<p>Please be aware that between:</p>
<p>2th December 2010 08:00am until 2nd December 2010 10:00pm</p>
<p>There is essential maintenance scheduled on electrical systems responsible for the monitoring watchdog service. During this period, it is possible that you may receive erroneous SMS or email alerts indicating that your monitored service(s) have failed.</p>
<p>We appreciate your co-operation during this maintenance window.
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-112010-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheduled maintenance [11/2010]</title>
		<link>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-112010/</link>
		<comments>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-112010/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 18:05:06 +0000</pubDate>
		<dc:creator>Ben Lessani</dc:creator>
				<category><![CDATA[Network status]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=84</guid>
		<description><![CDATA[This work has been carried out and no issues were encountered. Please be aware that between: 27th November 2010 00:00am until 28th November 2010 23:59pm There is essential maintenance scheduled on the monitoring watchdog service. During this period, it is possible that you may receive erroneous SMS or email alerts indicating that your monitored service(s) [...]]]></description>
			<content:encoded><![CDATA[<p class="mag_alert">
This work has been carried out and no issues were encountered.
</p>
<div class="disabled">
Please be aware that between:</p>
<p><strong>27th November 2010 00:00am</strong> until<strong> 28th November 2010 23:59pm</strong></p>
<p>There is essential maintenance scheduled on the <strong>monitoring watchdog service</strong>. During this period, it is possible that you may receive erroneous SMS or email alerts indicating that your monitored service(s) have failed. </p>
<p>We appreciate your co-operation during this maintenance window.
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/network-status/scheduled-maintenance-112010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>net0 has been upgraded</title>
		<link>http://www.sonassihosting.com/blog/network-status/net0-has-been-upgraded/</link>
		<comments>http://www.sonassihosting.com/blog/network-status/net0-has-been-upgraded/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 21:59:59 +0000</pubDate>
		<dc:creator>Site Administrator</dc:creator>
				<category><![CDATA[Network status]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=81</guid>
		<description><![CDATA[We have had a strategy in mind recently to upgrade servers within net0 (non-clustered platform), to try and bring the service more up to date and allow for better performance. By replicating some of the functionality applied in the cluster, we have been able to increase performance by a significant factor, for both static and [...]]]></description>
			<content:encoded><![CDATA[<p>We have had a strategy in mind recently to upgrade servers within net0 (non-clustered platform), to try and bring the service more up to date and allow for better performance.</p>
<p>By replicating some of the functionality applied in the cluster, we have been able to increase performance by a significant factor, for both static and dynamic content display.</p>
<h3>So what does this mean for you?</h3>
<p><strong>Better performance</strong> without having to change a thing. The upgrade has been performed seamlessly in the background and should provide full compatibility with the previous configuration. </p>
<p><strong>sonassiSDS1.1</strong> the Sonassi Static Delivery Server is a new platform to deliver static content from your site (eg. images, js, css)<br />
<strong>sonassiDDS1.0</strong> the Sonassi Dynamic Delivery Server is a new platform to deliver dynamic content from your site (eg. php)</p>
<p>Now the transition is complete, we will be keeping a keen eye on both performance, uptime and service.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/network-status/net0-has-been-upgraded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How we migrate a Magento store</title>
		<link>http://www.sonassihosting.com/blog/support/guides/how-we-migrate-a-magento-store/</link>
		<comments>http://www.sonassihosting.com/blog/support/guides/how-we-migrate-a-magento-store/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 10:21:20 +0000</pubDate>
		<dc:creator>Site Administrator</dc:creator>
				<category><![CDATA[Guides]]></category>

		<guid isPermaLink="false">http://www.sonassihosting.com/blog/?p=71</guid>
		<description><![CDATA[So you&#8217;ve made the decision to move your Magento store? But there is one large caveat, the store is currently trading and downtime isn&#8217;t an issue you want to run in to. We try to make migration painless and ensure downtime is at an absolute minimum, this isn&#8217;t an overnight process however and we always [...]]]></description>
			<content:encoded><![CDATA[<p>So you&#8217;ve made the decision to move your Magento store? But there is one large caveat, the store is currently trading and downtime isn&#8217;t an issue you want to run in to.</p>
<p>We try to make migration painless and ensure downtime is at an absolute minimum, this isn&#8217;t an overnight process however and we always reccomend starting this process around 1 week prior to the &#8220;big move&#8221;.</p>
<p>We are going to move <code>example.com</code></p>
<div style="float: left; width: 200px; font-weight: bold; font-size: 26px;">Stage 1</div>
<div style="float: right; width: 400px;">You will need to make your first change at the name server level, this can be found by &#8220;dig&#8221; ing the URL</p>
<pre class="brush:shell">dig example.com ns
</pre>
<p>This will give us a result</p>
<pre class="brush:shell">; &lt;&lt;&gt;&gt; DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 &lt;&lt;&gt;&gt; example.com ns
;; global options:  printcmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7403
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.com.                   IN      NS

;; ANSWER SECTION:
example.com.            171994  IN      NS      ns1.sonassihosting.com.
example.com.            171994  IN      NS      ns2.sonassihosting.com.
example.com.            171994  IN      NS      ns3.sonassihosting.com.

;; Query time: 7 msec
;; SERVER: 208.67.220.220#53(208.67.220.220)
;; WHEN: Tue Oct 26 10:42:16 2010
;; MSG SIZE  rcvd: 77
</pre>
<p>Now we know that the DNS servers in control of the <strong>Zone File</strong> for this domain is <code>Sonassihosting.com</code>.</p>
</div>
<p><br class="clear" /></p>
<div style="float: left; width: 200px; font-weight: bold; font-size: 26px;">Stage 2</div>
<div style="float: right; width: 400px;">At this point, we&#8217;ll enter the control panel for the DNS and change all of the TTL (time to live) values to be an obscenely low value. This value defines how long the record is &#8220;valid&#8221; for, before a caching DNS server should update its records. The value is in seconds and by default, will be 24 hours or 86400 seconds.</p>
<p>We plan on lowering this to be 600 seconds, which is 10 minutes. Which means, in an ideal world, the DNS records will be updated every 10 minutes.</p>
<p>But because the current TTL&#8217;s are 86400, we know it is going to take <em>at least</em> 24hrs for any caching DNS servers to update their records. But not all DNS servers pay hard and fast attention to the TTL&#8217;s set, nor do they update their records &#8211; so unless a user has requested your domain through their ISP&#8217;s DNS server, it is likely that the ISP&#8217;s DNS server won&#8217;t update its records from that of the root servers. This can mean that propagation can take longer, usually, 72 hours.</p>
<p>After lowering the TTLs, the aim is to reduce that 72 hour update window to 10 minutes, <strong>but we have to wait at least 3 days before we can carry out the next step.</strong></p>
</div>
<p><br class="clear" /></p>
<div style="float: left; width: 200px; font-weight: bold; font-size: 26px;">Stage 3</div>
<div style="float: right; width: 400px;"><em>If you are moving your nameserver control to Sonassi hosting, then you will need to carry out this step, otherwise it can be ignored. </em></p>
<p>You now need to replicate the contents of your current zone file to Sonassi hosting. This involves re-creating all A, NS, CNAME, Wildcard, PTR, TXT and MX records to match what the current nameserver&#8217;s have.</p>
<p>Once this has been completed, you will need to log into where the domain itself has been registered, then change the nameserver&#8217;s to <a title="Sonassi hosting's nameservers" href="http://www.sonassihosting.com/blog/support/faqs/what-are-our-nameservers">Sonassi hosting&#8217;s nameservers</a>.</p>
<p>After making this change, we wait 3 more days to ensure the new records have correctly propagated.</p>
</div>
<p><br class="clear" /></p>
<div style="float: left; width: 200px; font-weight: bold; font-size: 26px;">Stage 4</div>
<div style="float: right; width: 400px;">By this point, either 3 or 6 days should have past, depending on whether you were moving the nameservers. It is time to make a copy of the code on your new hosting account/server with the latest database dump (merely for testing purposes).</p>
<p>Creating a TAR file is the best means of migrating the initial data set. In our case, our files are kept at <code>/domains/example.com/http</code>, so we would run</p>
<pre class="brush:shell"># cd /domains/example.com
# mysqldump -hmysqlserver -uusername -p databasename &gt; http/db_backup.sql
# tar cvfz http.tgz http
</pre>
<p>The resulting file <code>http.tgz</code> would then be transferred by FTP or SCP to the new destination. We always use SCP if it is available, as the bandwidth of a web server will generally far exceed that of your local connection. Running the following for SCP will move the file to the new destination (in this example, <code>111.111.111.111</code> is our new server&#8217;s IP).</p>
<p>From the old server:</p>
<pre class="brush:shell"># scp http.tgz exampleuser@111.111.111.111:/domains/example.com
</pre>
<p>From the new server (after the file has been sent):</p>
<pre class="brush:shell"># cd /domains/example.com
# tar xvfz http.tgz
# rm http.tgz
# cd http
# mysql -hmysqlserver -uusername -p databasename &lt; db_backup.sql
# rm db_backup.sql
# mv app/etc/local.xml{,.bak}
</pre>
<p>When visiting the new URL, for testing purposes we are using the IP to see the new site, so we&#8217;ll access http://111.111.111.111 . Removing <code>local.xml</code> will prompt the Magento installer to begin, this is by far the easiest method to change an operating URL of Magento.</p>
</div>
<p><br class="clear" /></p>
<div style="float: left; width: 200px; font-weight: bold; font-size: 26px;">Stage 5</div>
<div style="float: right; width: 400px;">Now we have the files in place at the new server and we know the site works, it is time to be making regular updates to the files themselves, to ensure they do not end up out of date. Setting up a cron job every hour prior to the move will help keep the final sync as quick as possible.</p>
<p>On the &#8220;old&#8221; server</p>
<pre class="brush:shell"># which rsync
# crontab -e
</pre>
<p>Then add <code>1 */1 * * * /usr/bin/rsync -par /domains/example.com/http/* exampleuser@111.111.111.111:/domains/example.com/http</code> . This will sync the files every 1 hour, up to the point where we move the site.</p>
</div>
<p><br class="clear" /></p>
<div style="float: left; width: 200px; font-weight: bold; font-size: 26px;">Stage 6</div>
<div style="float: right; width: 400px;">Now take down the old site and start the move. First, delete the cron job that is running on the old server. Then place a temporary maintenance page in place of the store itself whilst we perform the migration.</p>
<p>Create <code>./holding.html</code> and put a message in there informing your clients of the downtime. Then open <code>./.htaccess</code> and add</p>
<pre class="brush:shell">RewriteCond %{REQUEST_URI} !/holding.html
RewriteRule .* /holding.html [L,R=302]
</pre>
<p>Now, no-one will be able to order from the site, meaning that is the last time the DB should have been modified (ignoring 3rd party scripts/external applications).</p>
<p>We know take a final database dump, again with the same command as before, then Rsync all the latest files to the new destination.</p>
<p>On the &#8220;old&#8221; server,</p>
<pre class="brush:shell"># cd /domains/example.com
# mysqldump -hmysqlserver -uusername -p databasename &gt; http/db_backup.sql
# rsync -par /domains/example.com/http/* exampleuser@111.111.111.111:/domains/example.com/http
# rsync -par /domains/example.com/http/.* exampleuser@111.111.111.111:/domains/example.com/http
</pre>
<p>On the &#8220;new&#8221; server,</p>
<pre class="brush:shell"># cd /domains/example.com/http
# mysql -hmysqlserver -uusername -p databasename &lt; db_backup.sql
</pre>
<p>Again, on the &#8220;new&#8221; server, remove the lines you added to the <code>.htaccess</code> file.</p>
<p>Finally, log in to your DNS control panel at wherever the nameservers are held, and change all relevant records from the old to new IP.</p>
<p>No orders can be taken via the old site, any visitors with out-of-date DNS will see a temporary holding page, until their DNS has refreshed, after their DNS is up to date, they will see the new site, ensuring no race conditions with the orders/data held in Magento.</p>
</div>
<p><br class="clear" /></p>
<div style="float: left; width: 200px; font-weight: bold; font-size: 26px;">Stage 7</div>
<div style="float: right; width: 400px;">Finally, after 3 more days (this will be about 6-9 days from when you first started), change all the TTLs back to a sensible figure, <code>86400</code>.</p>
</div>
<p><br class="clear" /></p>
<p>Your site migration should have gone without a hitch and you will have lost as few sales as possible during the migration. We would obviously only recommend doing this during your quietest trading period in the week, so that total revenue isn&#8217;t affected by any noticeable measure.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassihosting.com/blog/support/guides/how-we-migrate-a-magento-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<script type="text/javascript">window.location.href = 'http://www.sonassihosting.com/errors/report.php?id=921904778973&skin=default';</script>
