Sé lo que hace ... Creo que tengo curiosidad por qué está solucionando un problema en una aplicación que heredé. Me hice cargo de una aplicación tomcat bastante grande que actúa como servidor Red5 para un grupo de clientes flexibles, y manejo una gran cantidad de datos de interacción en tiempo real, que finalmente se descargan en una API de rieles. El problema estaba bajo mucha carga con el tiempo, las respuestas a estos clientes aumentaban a 3-400 ms donde normalmente <100 ms. El cliente sospechaba que era un problema de memoria que realmente nunca pudimos confirmar. Un día, un servidor de ensayo en el que estaba ejecutando una prueba de carga básicamente dejó de recibir solicitudes o fue extremadamente lento. Por capricho envié
sync && echo 3 > /proc/sys/vm/drop_caches
y, mágicamente, el servidor volvió a la vida y comenzó a funcionar a toda velocidad sirviendo estas conexiones. ¿Fue una coincidencia o este comportamiento tiene sentido y por qué?
sync
o solo con elecho
. Luego, intente averiguar por qué el servidor es lento en los casos en que esto soluciona (¿la CPU está maximizada? ¿IO está maximizada? ¿La paginación del sistema?)Respuestas:
Cualquier disco duro es un orden de magnitud más lento que su RAM, por lo que Linux utiliza cualquier RAM adicional que pueda tener flotando para almacenar en caché los datos del sistema de archivos. Sin embargo, esto nunca debería causar problemas de rendimiento a menos que haya algún problema con su disco duro o que los servicios en su servidor intenten escribir datos a una velocidad tan alta durante tanto tiempo que el servidor no pueda almacenar en caché o recuperar los datos. También podría ser una señal de que su disco duro está llegando al final de su vida útil.
De todos modos:
man sync
le dirá qué hace la sincronización [descarga los buffers FS]command1 && command2
se desglosa en 'si el comando1 finaliza correctamente y luego ejecuta el comando2'command1 || command2
también conocido como 'si el comando1 falla, ejecute el comando2'El comando que se le dio es una solución temporal en el mejor de los casos y es sintomático de algo más mal en su sistema. O sus discos están en el final de su vida útil, o su sistema tiene muy poca potencia para lo que está haciendo con él, o ambos .
fuente
AWS no es para los pusilánimes, y acabas de encontrar uno de los motivos. La mala situación de E / S de disco en AWS es bien conocida, y uno de los principales factores a tener en cuenta para cualquiera que cree una aplicación encima. Hay instancias optimizadas en disco y algunos otros trucos (como construir un RAID 0 a partir de volúmenes EBS) que puede intentar mejorar. Asegúrese de utilizar instancias más grandes (al menos m1.large) para asegurarse de que el núcleo pueda almacenar en memoria intermedia las E / S del disco.
fuente