Un servidor Redis consume decenas de G de memoria en un corto período de tiempo y, finalmente, se bloquea debido a SWAP. Debido a que los antecedentes sociales de este servidor son más complicados, es imposible juzgar quién es el sospechoso.
La intuición inicial es que algunas personas han guardado una gran cantidad de datos, por lo que el problema es averiguar qué claves ocupan mucho espacio, los colegas de DBA utilizaron redis-rdb Herramientas como herramientas para analizar archivos de datos. Es una pena que, aunque se encontraron algunas claves de gran volumen, los sospechosos finalmente se descartaron y el problema parecía estar en un punto muerto.
Después de insinuarnos en un callejón sin salida, comenzamos a ajustar el ángulo de la investigación: incluso si el espacio ocupado por una clave en sí no es grande, si el número de claves en el mismo modo es grande, entonces el total ocupará una gran cantidad de espacio. Entonces, el problema se convierte en mucho espacio para averiguar qué teclas del mismo modo ocupan. Esta vez no quiero usar ninguna herramienta, pero quiero verificar los cambios de memoria al eliminar las claves sospechosas en el servidor de prueba:
shell> /path /to /redis-cli keys foo: * | Xargs /path /to /redis-cli del¡El triste recordatorio es que el servidor está colgado cuando se ejecuta este comando! Debido a que hay demasiados datos, KEYS no puede soportarlo. SCAN debe usarse en este punto, tiene el concepto de un cursor y solo una pequeña cantidad de datos está involucrada en cada iteración.
Es un poco complicado usar SCAN directamente en la línea de comandos, así que usé PHP
:
<? php $ redis = new Redis (); $ redis- > setOption (Redis :: OPT_SCAN, Redis :: SCAN_RETRY); $ match = 'foo: *'; $ count = 10000; while ($ keys = $ redis- > scan ($ it, $ match, $ count)) { $ redis- > del ($ keys);}? >Asegúrese de monitorear los cambios de memoria al eliminar, puede confirmar el problema:
shell > watch -d -n 1 '/Ruta /a /redis-cli info | Grep memory 'En cuanto a la adquisición de claves sospechosas, soy un ignorante, simplemente obtengo los datos de muestreo a través de MONITOR o SCAN. Además, a partir de este caso, el cambio en el número total de claves de monitoreo es muy importante, desde INFO puede tomar Ir a ello
Todo el mundo sabe cómo verificar el tiempo de instalación del sistema win7. De hecho, es muy simpl
En sistemas similares a Unix, puede usar top para ver recursos del sistema, procesos, uso de memoria
Piénselo, ¿qué sucede si desea cambiar el tamaño de una imagen a un tamaño más pequeño? Por supuesto
Como entusiasta de Linux, después de varias determinaciones, abandonó el sistema dual e instaló L
Introducción al concepto de TLB en Linux
Las reglas de partición de CentOS se resumen en
Los fundamentos de usar el shell en Linux tutorial
10 accesos directos bajo Ubuntu Linux
No culpe a la pantalla dual del sistema operativo Linux actual
Administración más efectiva Cinco trucos geniales de la línea de comandos de Linux
demonio en el fondo para sistemas Linux
Linux con un clic instalación lnmp entorno completo Raiders
Formas de determinar si el sistema Linux es hackeado
Win8 tiene que conocer el conocimiento dinámico de la pasta magnética
Anti-defensa, evidencia de malware invadiendo la computadora
Win8 habilidades de aplicación del menú de inicio
¿Cómo prohíbe el sistema Win7 que Adobe flash player se actualice automáticamente?
Win10 actualización 0x8024402f error cómo hacerlo
Cómo abrir la herramienta de dibujo en el sistema Win10
¿Dónde está el mouse Win8 configurado en