Tengo un problema que me obliga a analizar varios archivos de registro desde una máquina remota. Hay algunas complicaciones: 1) El archivo puede estar en uso 2) Los archivos pueden ser bastante grandes (100mb +) 3) Cada entrada puede ser de varias líneas¿Cuál es la mejor manera de leer y analizar un archivo de texto grande a través de la red?
para resolver el problema en uso, Necesito copiarlo primero. Actualmente estoy copiando directamente de la máquina remota a la máquina local y analizándolo allí. Eso lleva al problema 2. Dado que los archivos son bastante grandes, copiarlo localmente puede llevar bastante tiempo.
Para mejorar el tiempo de análisis, me gustaría hacer el analizador de subprocesos múltiples, pero eso hace que tratar con entradas de múltiples líneas sea un poco más complicado.
Los dos problemas principales son:? 1) ¿Cómo puedo acelerar la transferencia de archivos (compresión ?, está transfiriendo a nivel local, incluso lo necesite ?, ¿Puedo leer un archivo en el uso de alguna otra manera) 2) ¿Cómo puedo tratar con las entradas de varias líneas al dividir las líneas entre los hilos?
ACTUALIZACIÓN: La razón por la que no hice el análisis obvio en el motivo del servidor es que quiero tener el menor impacto de la CPU posible. No quiero afectar el rendimiento de la prueba de sistema del sistema.
Si copiar un archivo de texto de 100mb directamente a través de la red tarda x segundos, y tener un cliente remoto comprime y envía el archivo y luego desinflar/leer lleva x/4 segundos, ¿no vale la pena? (Tenga en cuenta que en realidad no sé cuánto tiempo llevaría comprimir/enviar/descomprimir/leer) – midas06
Por supuesto, puede (y debería) usar algo de compresión en la red. Como dije, revise sus opciones de transmisión IO: algunos chicos sugirieron algunas bibliotecas zip. OTOH si puedes poner un programa en el extremo remoto, ¡haz el procesamiento allí! –