Windows server: I have tried everything to increase its performance

Windows server: I have tried everything to increase its performance

by Mari Cruz García -
Number of replies: 4

Hello,

I have two VMs located in two different servers, which are hosted by our educational partner in Kuwait. One of the VM is used for running our Moodle production site (Moodle 2.2.4) and the other VM is for a test site, which is an exact mirror of our production site, in terms of  Moodle version, php and MySQL settings, RAM memory, etc.

The hardware conditions for both servers are excellent: dedicated machines (no other application of site are running in any of the servers), 8 GB RAM memory, 60 GB c drive, 100 GB E drive (this is the disk in which moodle and moodle data directories are)

The OS is Windows Server 2008, service package 1 installed, for both machines.

Moodle version: Moodle 2.2.4

Php  version: 5.3.10

MySQL 5.5.13

IIS7 Configuration:
        * ASP.NET
        * .NET Extensibility
        * fast-CGI
        * ISAPI Extensions
        * ISAPI Filters
        * Basic Authentication

In both Moodle sites, there is a delay of around 3-5 seconds since the moment that you click on a link to a resource (for instance, a Moodle course from the home page, or a Moodle activity, etc), until the resource is displayed.

The delay for loging in the Moodle site is around 5 seconds.

I have been monitoring those delays with Firebug and recording the times, as you can read here.

I am using the option keep alive: true for the connections, because when I changed it to false, it only increased the loading time. I read in Windows IIS documentation that this option should be kept to true.

What I have noticed monitoring the number of request in Firebug is that the number of requests while navigating between Moodle courses/resources is around 90/100. I don't know if this is normal or I should decrease the number of requests.

For logging in the frontpage of Moodle, the request that takes more time is:

  • Request GET learning.health.org.kw

Timeline: 5.05s receiving.

 

6.95 load

Connection: Keep alive

 

 

and when I log in a Moodle course from the homepage, the request that takes more time is:

Request GET view.php?id=58

Waiting time: 3.57s

Receiving: 503ms

Event timing relation to the request start:

3.57load

Our theme does not use jquery or anything strange that could increase the loading time. Obviously, I have disable designer mode in the theme settings.

With regard to the fast-cgi settings, I have the following settings:

Instance MaxRequests: 10000
Activity Timeout = 600

Idle Timeout = 300

Request timeout = 600

I have to increase the instance max requests to 10.000 because we have some timeout problems while uploading files when the number was lower.

I have played around decreasing the number of instance max requests, but it doesn't make any difference.

We don't keep ldap passwords in cache.

I have also played with the option

Use database for session informationdbsessions

 

Default: Yes
 
which currently is set to 'Yes', but I haven't noticed any difference.
 
I also downloaded the free version of the Wireshark sniffer. With my limited knowledge and the colour code that Wireshark provides, I couldn't spot  any 'bad packages', except a couple of headers (I passed the report to IT, so that they could make a better interpretation of it, and they didn't mention anything strange).
 
I know that the next step is trying a php acceletor, but since this is a convoluted issue and it is not clear at the Moodle community which accelerator we should use for Windows servers (there seem to be a bug for WinCache), I prefer to avoid that option.
 
Could you please advice on what else I can try to reduce the average loading time of 3seconds?
 
Thank you very much for your advice.
Mari Cruz

 

 

Average of ratings: -
In reply to Mari Cruz García

Re: Windows server: I have tried everything to increase its performance

by Andrew Emmett -

Hi Mari

Are you per-chance testing as an administrator. I had similar issues, but eventually figured out that testing as an admin was part of the problem. see post https://moodle.org/mod/forum/discuss.php?d=222025#p967483 and Frederic Nevers stats...

Andy

Average of ratings: Useful (1)
In reply to Andrew Emmett

Re: Windows server: I have tried everything to increase its performance

by Mari Cruz García -

I never thought of that possibility, Andy. Thanks for suggesting it.

I have read that delay times sometimes vary depending on the browser used (IE and Moodle 2.3, for instance, have a lot of performance issues), but I never thought that testing the perfomance as an adminstrator could be part of the problem.

I will look at the thread and let you know.

Thank you very much for your advice.

In reply to Mari Cruz García

Re: Windows server: I have tried everything to increase its performance

by Andrew Lyons -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers Picture of Testers

Hi Aaricia,

The performance issues with IE and Moodle 2.3 are client-side JavaScript performance with IE 8 and below. They're largely caused by the antiquated JS engine in those browsers.

If you do find that a non-administrator account is significantly faster, you may find that you have a plugin doing something wrong. For example, I recently discovered that mod_turnitintool plugin (not in the Plugins directory) tried to connect to the turnitin website and check whether it was up to date. It was doing this in it's settings page and, due to a missing if test, was doing so on every page load for all administrators. It was adding about 0.5 seconds to page load time for those users.

Andrew

In reply to Andrew Lyons

Re: Windows server: I have tried everything to increase its performance

by Mari Cruz García -

Hello Andrew,

I didn't notice significant differences in loading times loging as administrator or user.

I heard of that problem with Turnitin before in the Moodle UK community.  They fixed it adding an entry for the Turnitin IP address in the hosts file.