2012-06-07 28 views
8

Cuando ejecuto una instancia de rol de trabajador en Azure, ¿es una VM completa ejecutándose en un host compartido (como EC2)? ¿O se ejecuta en un sistema compartido (como Heroku)?¿Es una instancia de rol de trabajador de Windows Azure una máquina virtual completa?

Por ejemplo, ¿qué sucede si mi aplicación comienza a solicitar 100 GB de memoria? ¿Se eliminará automáticamente por la violación de los límites (como Google App Engine), o se agotará la máquina virtual, por lo que el tejido Azure se reinicia?

¿Se ejecutan dos papeles en el mismo sistema?

Respuesta

10

Es una máquina virtual completa, y los recursos asignados se basan directamente en el tamaño de la máquina virtual que elija, de 1,75 GB (Pequeño) a 14 GB (XL), con 1-8 núcleos. También hay una instancia Extra Small con 768MB RAM y núcleo compartido. Los detalles completos de tamaño de VM son here.

Con Windows Azure, su máquina virtual está asignada en un servidor físico, y es responsabilidad del tejido encontrar dichos servidores para asignar correctamente todas sus instancias de rol web o de trabajador. Si tiene varias instancias, esto significa asignar estas máquinas virtuales a través de dominios de falla.

Con su máquina virtual, no tiene que preocuparse por ser asesinado si intenta asignar demasiado en el depósito de recursos: es como tener una máquina, y no se puede ir más allá de lo que hay allí.

En cuanto a dos roles que se ejecutan en el mismo sistema: cada función tiene instancias y con varias instancias, como mencioné anteriormente, sus instancias se dividen en dominios de falla. Si, por ejemplo, tiene 4 instancias y 2 dominios de falla, es posible que tenga dos instancias en el mismo rack (o tal vez el mismo servidor).

+0

Re: último párrafo. Pero las dos instancias seguirían en máquinas virtuales separadas, ¿verdad? –

+1

Re: "con su máquina virtual ..." ¿Azure comienza a intercambiarse en el disco si solicito demasiada memoria hasta un umbral, o recibiré un error de falta de memoria inmediatamente? –

+1

Las instancias nunca se combinan en las mismas máquinas virtuales. Y en relación con el intercambio de disco y las condiciones de falta de memoria: todo está virtualizado. Si bien no puedo dar una respuesta definitiva absoluta, puede imaginarse que cada caja física tenga suficientes recursos para admitir una máquina virtual completa de 8 núcleos y 14 GB (XL). Esto también significa que hay suficiente capacidad física para admitir varias VM más pequeñas. –

3

Realicé una prueba rápida para verificar esto. Estoy usando una instancia "pequeña" que tiene algo así como 1,75 gigabytes de memoria. Mi código usa un ArrayList para almacenar referencias a matrices grandes para que esas matrices no sean basura. Cada matriz es mil millones byte sy una vez asignada, ejecuto un ciclo que establece cada elemento en cero y luego otro ciclo para verificar que cada elemento sea cero para asegurar que la memoria está realmente asignada desde el sistema operativo (no estoy seguro si importa) en C#, pero realmente importó en C++). Una vez que se crea la matriz, se escribe y se lee desde, se agrega al ArrayList.

Así que mi código asignó con éxito cinco de tales matrices y el intento de asignar el sexto resultó en System.OutOfMemoryException. Desde 5.000 millones de bytes más gastos indirectos es sin duda más 1,75 gigabytes de memoria física asignada a la máquina Creo que esto demuestra que el archivo de página está habilitado en la máquina virtual y el comportamiento es el mismo que en Windows Server 2008 habitual con las limitaciones inducidas por la máquina donde se está ejecutando.

Cuestiones relacionadas