sqlite3 no se puede ejecutar en la terminal
Método de ubicación: 1. Primero use sqlite para iniciar sesión en la base de datos, verifique si el contenido de la base de datos es correcto y si se debe a que reemplazó el archivo de la base de datos pero no recargó el proceso. Después de comprobarlo, descarte la posibilidad.
2. En segundo lugar, verifique los errores devueltos durante la ejecución del código fuente sqlite3. La apertura del archivo falló y la apertura del archivo falló. Este error generalmente se debe al agotamiento de los descriptores de archivos durante el proceso y el punto de búsqueda es sospechoso.
3. Verifique los descriptores de archivo ocupados por el proceso cuando opera la base de datos. Generalmente, el descriptor de archivo máximo de un proceso es 1023. Suponga que el PID del proceso es 223, luego cd/proc/223. /fd; ls -l, se puede ver que el proceso ha ocupado todos los descriptores de archivos, que han llegado a 1023, y los recursos están agotados, por lo que es imposible volver a obtener los descriptores de archivos. En términos generales, esto se debe a que el socket no se cierra después de su creación, lo que provoca pérdidas de recursos. También puede utilizar el comando lsof (listopenfiles) para ver cuántos descriptores de archivos ocupa un proceso, lo cual es muy útil para monitorear el sistema y solucionar problemas. lsof|grepxxx (nombre de proceso)/PID (número de proceso) puede ver los descriptores de archivos ocupados.
4. Ejecute netstat-a para ver todas las conexiones y descubra que una gran cantidad de conexiones de bases de datos de Redis están en estado conectado. Básicamente, la conexión a Redis se bloquea cuando se filtran recursos.
5. Al analizar los escenarios de prueba y los códigos relacionados, se descubrió que efectivamente había una gran cantidad de problemas de fuga de recursos.