2008-11-25 21 views
10

El título prácticamente lo resume, y estoy seguro de que hay una explicación perfectamente válida,
pero parece extremadamente extraño que las páginas se carguen (después están compilados) en mi computadora local parece tardar una eternidad, cuando el mismo código se agrieta rápidamente cuando está "en vivo".¿Por qué las páginas ASP.NET son mucho más lentas en el servidor local que en el servidor de producción?

Estoy desarrollando en Vista, IIS7, hardware bastante bueno; mientras que el servidor es una sola máquina, ejecuta Windows Server 2003 e IIS6 en un Xeon < 3 ghz y una línea gigabit.

Por supuesto, entiendo que el servidor web está diseñado especialmente para este tipo de actividad,
pero todavía parece extraño que una máquina que sirve a 2-300 sesiones a la vez
(distribuido de manera desigual en 5 ~ NET 2.0 aplicaciones) a través de una red remota (aka. internet ;-)
es mucho más rápido en la presentación de las páginas, en comparación con la ejecución del código localmente ...

Sólo es algo que ha estado en mi mente por un mientras ...

ACTUALIZACIÓN
¡Muchas gracias por las respuestas! Solo pensé en agregar algunos puntos a lo anterior:

  • He intentado eliminar todos los obstáculos que rodean mi servidor local; apagué el firewall y el antivirus, dejé de verter leche en la carcasa de mi computadora, eliminé cualquier proceso pesado, etc.
  • Esto no se incluye en un solo proyecto o aplicación; es algo que he notado y sobre lo que me he preguntado desde que comencé a trabajar como desarrollador (~ 1 año)
  • No creo que los recursos inaccesibles tengan algún significado; cuando trabajo localmente, generalmente tengo todos los recursos del proyecto (imágenes, flash, etc.) localmente
  • Realmente no puedo ver ninguna diferencia relacionada con la memoria caché activada o desactivada.

Elegí una página al azar del proyecto en el que estoy trabajando, la recargué completamente un par de veces; localmente lo obtuve en aproximadamente 4 segundos, en comparación con ~ 2 segundos desde el servidor. Esto estaba usando FF y Firebug; usando Opera, sentí que había una diferencia menor, pero eso es solo mi instinto ...

Así que supongo que deja (como mencionó) discos duros y la conexión a la base de datos ... Simplemente parece extraño ...

+1

El servidor de desarrollo ASP.NET no es un software de servidor de producción, debido a esto, no está muy afinado. Sin embargo, dado que el servidor nunca tiene una carga real, no tiene un problema de rendimiento, a menos que esté haciendo un crujido desagradable. Ahora, con FF hay un problema que ocurre cuando network.dns.disableIPv6 no es verdadero. Puedes probar about: config y cambiar network.dns.disableIPv6 a true en FF. Con Google Chrome, aún no he encontrado una solución, IE no parece tener este problema. –

+2

Aquí hay un consejo que acabo de encontrar para Google Chrome, edite su archivo de hosts (busque en Wikipedia detalles) y si tiene una entrada ":: 1 localhost", simplemente elimínela o comente "# :: 1 localhost" acelerará las cosas. –

+0

Wow 4 segundos? En mi servidor local, tardé entre 15 y 30 segundos en cargar la página y, a menudo, sql falla. 15% -20% de todas las solicitudes. Comparado con el servidor ~ 2 seg. Tengo conexión de 8 mb, núcleo cuádruple, núcleo de 4 gb, etc., nunca supe la causa de esto, incluso ocurre con páginas que no hacen ninguna conexión externa. – formatc

Respuesta

3

Bien ... después de actualizar mi máquina (Q9550 @ 3.4ghz, 1TB> 100mb/s unidad de búsqueda) No veo ninguna diferencia, incluso cuando esta computadora hace las cosas (servidor MS SQL, IIS) en comparación con la misma página alojada en GoDaddy. Al hacer mi pregunta inicial, tenía una máquina algo menor y la comparaba con los servidores dedicados de mi empresa. Así que la respuesta a la pregunta es básicamente: No lo son. ¡Gracias por todas sus respuestas!

1

No hay ninguna razón para que la aplicación no se ejecute rápidamente localmente en la configuración descrita. Tal vez tenga algo más en juego.

Lo primero a tener en cuenta sería lo que está ejecutando en su cuadro de desarrollo: los firewalls antivirus o de software pueden ser un asesino para estas cosas, y es posible que desee probar con eso deshabilitado.

1

También puede verificar si su sitio está intentando acceder a contenido no disponible (URL no disponibles) desde su máquina de desarrollo. He tenido este problema un par de veces antes.

0

¿Ha considerado que puede deberse al almacenamiento en caché? es decir, las páginas del servidor de producción se almacenan en caché y las de localhost no se almacenan en caché.

también estoy de acuerdo con que terjetyl Es posible que su servidor local no puede encontrar un archivo vinculado (por ejemplo Javascript archivo fuente), el firewall puede estar bloqueando estos ....

3

Hay al menos dos razones para esto:

  • Primero, su servidor local probablemente esté ejecutando las páginas en modo de depuración con un depurador adjunto. Esto hace que todo funcione más lento

  • En segundo lugar, cada vez que cambie el código de las páginas o reinicie el servidor, todas las páginas se deben volver a compilar, y eso lleva tiempo.

En el servidor de producción de las páginas se compilan una vez y luego la versión compilada se sirve a todos los usuarios, y es probable que no se están ejecutando en modo de depuración (espero!).

0

SI hay cosas almacenadas en el servidor a las que la aplicación necesita acceder, esto disminuirá considerablemente las cosas - sí, he visto lugares donde había un servidor de producción que hospedaba el único sistema de base de datos disponible para toda la compañía , tanto para producción como para desarrollo.

1

Me sorprende que nadie haya mencionado discos duros todavía. El disco duro suele ser un cuello de botella típico en un sistema, y ​​los discos duros de escritorio a menudo son mucho más lentos que los discos de servidor (SCSI). Una estación de trabajo de escritorio también podría tener más procesos en ejecución que estén usando el disco al mismo tiempo, mientras que las máquinas de servidor están más optimizadas para ejecutar solo los procesos críticos del servidor. Pero, por supuesto, todo depende de qué está haciendo exactamente una máquina.

8

Si está utilizando Firefox o Safari y se encuentra en Windows Vista, entonces debería desactivar IP versión 6 ya que este se mete con Vista en combinación con WebDev y Firefox/Safari ...

En el tipo FF en acerca de: config en la barra de direcciones, filtrar para "IPv6" y establecer habilitado en FALSO!

trata de un error con IPv6 en Windows Vista y es un candidato muy probable para sus problemas ...

+0

PD! Después de leer el resto de las respuestas aquí, y también su pregunta otra vez, estoy MUY seguro de que este es el problema. Especialmente si prueba, p. Opera, Chrome o IE y no te dan las penalizaciones de velocidad ... Cómo solucionar esto en Safari No lo sé .... –

+0

He tenido que hacer esto antes, te dará un aumento de velocidad insana. Además, la clave exacta para establecer es: network.dns.disableIPv6 Y desea establecerlo en TRUE, no en falso. Lástima que no tengo suficiente reputación para editar :( –

0

Pequeño millones de cosas están en juego: la red más rápida; mejor servidor de base de datos en ejecución durante mucho tiempo y teniendo todas las consultas ya ejecutadas antes; ... tal vez se debe a Vista :)

+0

¿cómo puedes tener una red que sea más rápida que la conexión a tu máquina? – Malfist

1

¿Está realmente ejecutando esto a través de IIS7 o realmente se está ejecutando a través del Visual Studio ASP.NET Development Server? Si esto último, bueno ... eso mismo hay una gran razón. ASP.NET Development Server está optimizado para depurar aplicaciones, no para ejecutarlas rápidamente.

La otra mitad del problema es que en realidad no nos contó las especificaciones de su máquina, solo que es "hardware correcto", que generalmente no es una medida cuando se trata de computadora. Vista absorbe algunos recursos, tanto con su nuevo administrador de pantalla (para el escritorio Aero Glass) como con su tendencia a precargar aplicaciones comúnmente ejecutadas en la memoria RAM.

También parece que también está ejecutando el servidor de la base de datos desde su escritorio, lo que absorbe más recursos que las máquinas servidor, ya que es muy probable que tengan (a) servidores de bases de datos separadas.

Cuestiones relacionadas