Salakhetdinov Shamil
mcp2004 at mail.ru
Sat Jul 14 16:13:41 CDT 2012
Hi Jim -- What DNN version did you use there? AFAIS current DNN version (6.2.1), which is installed with default 'Typical' setup option runs on my sample site is running much quicker than DNN v.5.x and especially DNN v. 4.x and is producing smaller/cleaner HTML output. Upgrading DNN web site should never be done without first making full backup of the current setup. I'd not try to tune DNN by cleaning its sources - I suppose DNN currently runs very well by default. DNN also has caching feature, which can be used to cache static and rarely changing dynamic content etc. We can immediately test sample DNN site response time by attacking it form our PCs by using a C# script I'm posting in P.S. of this message. That C# script can be run from LINQPad (linqpad.net) - free version: Here are the test results I have got by running the test C# script from my PC: Started at: 15.07.2012 0:48:27 Completed at: 15.07.2012 0:48:37, elapsed time = 9.621s Completed tasks count = 50 Downloaded html total length = 1141600 Downloaded html pages count = 50 Download speed: 5.197 pages/s, 118662.651 bytes/s We can set the "time X" to run this script from our systems to try to put sample DNN web site down, or I can write a simple WinForms utility program, which can be run from our systems "attacking" sample site in the same UTC moments and sending stats to a web service... When we will get that test results then we will see is there any need to tune default DNN 6.2.x setup or it's running well enough even on a shared virtual hosting located somewhere in Moscow, Russia... What about this first step plan? Thank you. -- Shamil P.S. Sample web site "attacking" C# script - quick & dirty: / /* using statements should be commented in LINQPad and / /* additional namespeaces (F4) set instead //using System.Threading.Tasks //using System.Net void Main() { const int CYCLES_COUNT = 10; DateTime startTime = DateTime.Now; System.Console.WriteLine("Started at: {0}", startTime); int completedTasksCount = 0; PageDownloader.DownloadedHtmlTotalLength = 0; PageDownloader.DownloadedPagesCount = 0; foreach (int i in Enumerable.Range(1, CYCLES_COUNT)) { Parallel.Invoke ( () => Interlocked.Add(ref completedTasksCount, new PageDownloader("GettingStarted.aspx").Run()) ,() => Interlocked.Add(ref completedTasksCount, new PageDownloader("Home.aspx").Run()) ,() => Interlocked.Add(ref completedTasksCount, new PageDownloader("AboutUs.aspx").Run()) ,() => Interlocked.Add(ref completedTasksCount, new PageDownloader("OurServices.aspx").Run()) ,() => Interlocked.Add(ref completedTasksCount, new PageDownloader("NewsPromotions.aspx").Run()) ); } while (completedTasksCount < 5) System.Threading.Thread.Sleep(500); DateTime endTime = DateTime.Now; decimal elapsedTimeInSeconds = (decimal) (endTime - startTime).TotalSeconds; System.Console.WriteLine("Completed at: {0}, elapsed time = {1:#0.000}s", endTime, elapsedTimeInSeconds); System.Console.WriteLine("Completed tasks count = {0}", completedTasksCount); System.Console.WriteLine("Downloaded html total length = {0}", PageDownloader.DownloadedHtmlTotalLength); System.Console.WriteLine("Downloaded html pages count = {0}", PageDownloader.DownloadedPagesCount); System.Console.WriteLine("Download speed: {0:#0.000} pages/s, {1:#0.000} bytes/s", PageDownloader.DownloadedPagesCount/elapsedTimeInSeconds, PageDownloader.DownloadedHtmlTotalLength/elapsedTimeInSeconds); } public class PageDownloader { public static int DownloadedHtmlTotalLength; public static int DownloadedPagesCount; private string _pageUrl; public PageDownloader(string pageFileName) { string httpPrefix = "http://shamils-42.hosting.parking.ru/"; _pageUrl = httpPrefix + pageFileName; } public int Run() { try { string html = new WebClient().DownloadString(_pageUrl); Interlocked.Add(ref PageDownloader.DownloadedHtmlTotalLength, html.Length); Interlocked.Increment(ref PageDownloader.DownloadedPagesCount); } catch (Exception ex) { System.Console.WriteLine("Downloading failed for '{0}'", _pageUrl); } return 1; } } Sat, 14 Jul 2012 11:10:32 -0700 от "Jim Lawrence" <accessd at shaw.ca>: Hi Gustav/Shamil: There are none. It is running off a friend's servers and I am allowed everything I would like... We have IIS but may be going for the Ingnx server just for speed. I think we have MS SQL server 8. I would like to do something with the DNN FE as it is the ultimate resource pig. Get a few hundred instances going and you can bring any server and database to its knees as there is no other package that does more round trips. My experiences with NDD have been fairly frustrating. This same friend updated his version of NDD and SQL version and all his websites shut-down. It took us over a month to get the site running again after I had deleted thousand of lines of what I thought were convoluted useless code...classes calling classes calling classes (I.e. 758 lines with resource files, were replaced with 8 lines of code). That type of job should have taken an afternoon to get it working, tops. It stores everything in the database! The site is still has little issues and needs another week or two to completely clean up but the pages loads in a tenth of the time and now it run rock-solid. That said maybe NDD should be used to get a demonstration package boiler-plated together and up and running. Jim -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock Sent: Saturday, July 14, 2012 7:51 AM To: accessd at databaseadvisors.com Subject: Re: [AccessD] Where to publish stuff Hi Shamil To me that certainly looks like a route to follow. And why abandon DNN because it runs on Microsoft software? That would not be logical to me. But what about hosting costs? We have very little resources, and I would prefer not to be bothered with adds. /gustav <<< snip >>>