La mejor manera de mejorar el rendimiento (e incluir la conmutación por error de alguna manera)

Tenemos una aplicación que se ejecuta donde IIS y SQL están en la misma máquina. Es un servidor estándar de Windows2003, con 4gigs de RAM que se ejecutan en una máquina virtual.

Ahora los números de usuarios están aumentando constantemente. También hay algunas estadísticas enormes, que pueden ser ejecutadas por los usuarios pero tienen un gran impacto en el rendimiento para otros usuarios. Así que tenemos que mejorar el rendimiento de alguna manera.

Pensé en separar IIS y SQL en 2 máquinas diferentes con Windows2008 64bit y al menos 6 GB de RAM para cada máquina, pero también debería tener una solución de conmutación por error.

¿Puede recomendar algunos escenarios sobre cómo resolver el rendimiento y el problema de la conmutación por error?

Gracias

PD:

Solo para información: ahora estamos usando la administración estatal inproc en IIS, pero creo que será mejor cambiar a sqlstatemanagement.

EDITAR

He ampliado la pregunta hasta el punto de failover. Como nuestro cliente no quiere gastar demasiado dinero en licencias de servidor y SQL. ¿Sería "correcto" simplemente tener una replicación en un segundo servidor SQL y usar esto como una conmutación por error? ¿Conoces algunas mejores soluciones "baratas"?

La aplicación es solo para uso interno, pero ahora más y más departamentos están involucrados en este proyecto.

Respuestas a la pregunta(6)

Su respuesta a la pregunta