Me encontré con un problema extraño al usar la opción de registro de recolección de elementos no utilizados de JVM con el comando logrotate de Linux. Cuando se ejecuta la rotación, llena los valores NUL (^ @) de la primera línea del archivo dada como argumento para la JVM.La rotación de archivos del registro del recolector de basura (loggc) con logrotate no funciona correctamente
Digamos que esta es la llamada Java (Test.class se encuentra en/home/test /):
java -Xloggc: /home/test/test.log cp/home/test/prueba
La configuración de logrotate para este archivo es el siguiente:
/home/test/test.log {
gire 56
missingok
notifempty
copytruncate
nocreate
NOMAIL
}
que también tienen una entrada crontab de registro cada minuto para propósitos de prueba:
*/1 * * * */usr/sbin/logrotate -f /etc/logrotate.d/gcLog
Llegué a la conclusión de que JVM escribe en el modo de adición y mantiene algún tipo de desplazamiento utilizado para escribir la siguiente línea en el archivo relacionado, incluso si el archivo está truncado por logrotate (puedo estar equivocado).
Mi siguiente idea fue intentar y redirigir el archivo stdout a test.log. utilicé esta llamada java y se mantiene la misma configuración de logrotate y cron:
java -verbose: gc-cp/home/test/prueba> /home/test/test.log
Una vez más, cuando test.log es truncado por logrotate, el nuevo archivo creado se llena con valores NUL (^ @) en la primera línea.
No hace falta decir que no he encontrado nada útil al usar google. Encontré otra pregunta relacionada con stackoverflow, pero no pude configurar Java Script Wrapper, así que esto no funciona.
¿Alguien se ha encontrado con este problema? ¿Alguna idea de por qué está sucediendo esto? Mejor, ¿alguna solución o solución? Necesito tratar de canalizar la llamada a la aplicación a un script que lee la salida y tal vez mirar la forma en que Tomcat registra y rotar stdout en catalina.out (aquí también se apreciará algo de ayuda)
Mi trabajo sería hacer menos basura, menos GC y registros más cortos que no necesitan ser rotados. ;) –
Estoy de acuerdo con eso. Sin embargo, no es el punto de vista de mi jefe. – Hyb
Como mínimo, puede asegurarse de tener suficiente espacio en disco para iniciar sesión, de modo que no sea necesario rotarlo. Un TB no cuesta eso hoy en día. –