¿Tengo razón, puedo desactivar el intercambio para el servidor de producción?
No. Siempre tenga algo de espacio de intercambio.
Intenté ejecutar un servidor de producción sin intercambio una vez y aproximadamente una semana después, después de una actualización de Wordpress, PHP comenzó a comer mucha más RAM de la que habíamos contado. Cuando te quedas sin RAM y tienes habilitado el intercambio, las cosas se ralentizan (a veces mucho, a veces solo un poco, dependiendo de lo que se introduce allí), pero puedes iniciar sesión, encontrar el problema e intentar solucionarlo eso.
Cuando te quedas sin RAM y no tienes intercambio, los procesos mueren, las cosas se estancan y muchas veces tu única opción es reiniciar. Pero hasta que reinicie, las cosas probablemente se romperán.
En mi mundo, roto es mucho peor que lento.
Por supuesto, si encuentra que su sistema usa constantemente grandes porciones de intercambio (a menudo usará algunas solo como una forma de mover cosas viejas en caché), obviamente tiene un problema ("insertar RAM por favor"), pero tenerlo como definitivamente se recomienda una red de seguridad.
En respuesta al comentario de SpamapS:
En el mundo de los "sitios web exitosos", tiene failovers en caliente, equilibrio de carga y otras herramientas que permiten que una máquina explote y no tenga ningún efecto en el resto del sitio. Pero eso requiere mucho efectivo. Tener hardware redundante no es económico para la mayoría de los sitios, incluso si obtienen dinero.
Estoy completamente en desacuerdo con tu comentario sobre el tiempo de actividad. En una configuración tradicional de comercio electrónico, si las personas no pueden ver su sitio, no pueden comprarle a usted. Esto no es solo comercio electrónico, todos los intereses comerciales en línea toman mucho más críticas si estás caído por algún tipo de período. Lo sé porque alojo sitios y servicios para empresas y administro mis propios sitios. Lento = gruñón pero Abajo = furia. Incluso si solo baja un minuto a la vez, si un usuario ve un aviso de "baja por mantenimiento" más de un par de veces, asume que no puede mantener el sitio en funcionamiento.
Un servidor lento es menos que ideal, pero el intercambio no está ahí para ejecutarse todo el tiempo, es un último recurso para permitir que las cosas sigan funcionando mientras las arregla.
También asume que solo hay un servicio ejecutándose en la máquina. De nuevo, esto podría ser cierto si tienes megabucks para dividir todo, pero en el mundo real, las cosas se agrupan. Múltiples sitios web, ssh daemons, servidores ftp, servidores de correo electrónico, etc. Un proceso que se filtre en el intercambio podría ni siquiera afectar a otro servicio. Sin intercambio, todo tiene la misma probabilidad de terminación instantánea y aleatoria. No tienes control sobre eso.
Por supuesto, el intercambio no es la única respuesta. Necesita monitoreo para alertarlo cuando no tenga ram, pero simplemente desconectar y reiniciar no es la respuesta para la mayoría de las personas. Estoy seguro de que esto funciona para cualquier sitio web multinacional del que sea responsable, pero para nosotros, simples mortales (que constituyen la mayoría de Internet), hacerlo es un suicidio comercial.
Tengo que estar en desacuerdo con tener intercambio en servidores de producción.
En mi experiencia, el intercambio de disco rotativo hace que su sistema sea menos predecible y más propenso a frustrar fallas en todo el sistema. Un servidor popular de alta carga que está haciendo cualquier cosa con un disco lento local rápidamente se convertirá en algo mucho peor que un estado de falla. Los tiempos de respuesta aumentarán a 100 veces su nivel normal, y cosas simples como iniciar sesión a través de la consola o ssh pueden tomar minutos.
El intercambio de SSD es un caso especial y al menos eliminaría la ralentización del tiempo de búsqueda que generalmente mata al sistema. Sin embargo, las escrituras siguen siendo lentas, por lo que aún terminará esperando mucho, mucho tiempo para recuperarse de un proceso fuera de control.
Sin intercambio, su servidor LAMP simplemente matará los procesos para liberar RAM. Un monitoreo adecuado debería alertarlo y eliminar servidores de la producción si se eliminan los procesos críticos. El peor de los casos aquí es que todos tus métodos de inicio de sesión se eliminan y tienes que hacer un restablecimiento completo / ciclo de encendido. El peor de los casos es igual de probable con una máquina de intercambio fuera de control, pero mucho más difícil de detectar.
Si está utilizando PHP, habilite los límites de memoria y monitoree sus registros para detectar fallas. Aquí hay un truco, establezca el límite más bajo en su servidor de desarrollo que en producción. Si está utilizando mod_php en Apache, configure MaxRequestsPerChild en unos pocos miles, de modo que muera httpd antes de crecer demasiado con el tiempo. ¡Sobre todo, controle el uso de la memoria! Muchas veces la memoria se arrastra con el tiempo, y solo necesita reiniciar periódicamente un servicio con fugas mientras depura el problema.
fuente
El espacio de intercambio se usa cuando su sistema decide que necesita memoria física para los procesos activos y no hay suficiente memoria física no utilizada disponible. Si el sistema necesita más recursos de memoria o espacio, las páginas inactivas en la memoria física se mueven al espacio de intercambio, liberando así esa memoria física para otros usos.
Esta situación sucederá muchas veces en el servidor.
un). Un script no optimizado puede consumir gran cantidad de memoria
b). Las secuencias de comandos como la copia de seguridad siempre consumirán una gran cantidad de memoria
c). tráfico pesado
Por lo tanto, es una buena práctica tener algo de espacio de intercambio.
Más detalles: https://help.ubuntu.com/community/SwapFaq
fuente
El uso de intercambio le dará una protección adicional contra la inestabilidad del servidor. Es posible que haya momentos en que la RAM se esté agotando y en el servidor sin intercambio que podría provocar un bloqueo suave.
Probablemente estoy en minoría ahora cuando digo, todavía tiene sentido, como solían recomendar, tener el doble de intercambio que la memoria principal. Incluso en un sistema con 96 GB de RAM.
No cuesta mucho y, si lo necesita algún día, se alegrará de haberlo recibido. La razón para habilitar el intercambio es solo un análisis de costo-beneficio muy sencillo. ¡Hazlo! :-)
fuente
Me gustaría agradecer a Oli por la hermosa respuesta, lo sé. ¡Encuentro que la partición es un tema siempre verde! Estoy totalmente de acuerdo con la línea de la publicación de Oli y me gustaría compartir esta secuencia de comandos, por supuesto mejorable, que uso para monitorear el uso de intercambio de mis servidores.
Siempre configuro servidores y servicios para que funcionen sin ningún tipo de intercambio. Cuando sea así, asegúrese de que algo esté yendo mal o, en el mejor de los casos, que algo supere sus planes iniciales.
Calculo este script cada media hora en un entorno de producción. Me enviará una notificación si Swap use! = 0k. Podré investigar o tomar medidas sobre el tema, la mayoría de las veces, antes de que las cosas se pongan realmente mal .
Espera que tenga: bash, top, echo, awk y un comando de correo en funcionamiento, sin realizar ninguna comprobación.
Espero que ayude.
fuente