> The memory will probably be upgraded soonish i don't know which needs more though?
Adding RAM is the most effective way of getting more performance, provided, that was the bottleneck. Your current 3 GB could be that, more so on a Windows server! http://docs.moodle.org/en/Performance#Operating_System Also make sure that your operating system make use of the new RAM.
Generally the webserver keeps more things in RAM, whereas the database utilizes the CPU. But then you can configure the database server to keep the whole database in RAM, in which case the weight shifts to RAM.
> Firstly does this setup seem ok assuming 400 concurrent users?
Impossible to answer without knowing what they are doing, and how concurrent (in the same second or same minute). Did you consult the docs http://docs.moodle.org/en/Performance_FAQ#How_do_you_define_.22concurrent_users.22.3F ?
> I wondered whether one NIC on each to the network (gigabit) and the other a crossover cable between the two for a faster connection (lower latency etc)
The separate server causes the latency, irrespective whether it goes through the LAN or a crossover. The crossover would definitely help if your LAN is conjested, network interface saturated, etc. The question is, whether your webserver can deliver so fast to saturate a 1 Gbit/s link.
> If this is the way forward then how do I get the servers to talk to each other via the crossover link only.
As explained above the crossover may or may not help. It won't hurt in anycase. I don't know how to do that on Windows. On Linux it is pretty easy.
- assign both private interfaces two IP addresses from the same net
- add a new line to each routing table so that the internal traffic is delivered to the private interface
You can get windows-specific answers in the forum "Windows-based servers" http://moodle.org/mod/forum/view.php?id=6799