Назад | Перейти на главную страницу

Как сбросить данные, записанные на диск

Вопрос:

Как сбрасывать данные (поток байтов), записанные из приложения, в файловую систему? (что-то вроде tcpdump, но для ввода-вывода / файла).

В идеале он должен иметь возможность «прикреплять» и выгружать поток во время его записи, без специальной настройки приложения.

Контекст:

У меня есть приложение Java, которое развернуто на некоторых серверах. Это приложение использует JCL + Log4j для регистрации всех технических вещей.

На некоторых из них я испытываю довольно ... необычную проблему: часто файлы журналов загрязнены двоичными данными.

То же приложение, та же конфигурация, то же оборудование, та же ОС ... другое поведение

Все мои журналы здесь: если я обрабатываю файл журнала «строками», все возвращается в норму, но, поскольку у меня есть, скажем, 90% двоичного мусора, предварительная обработка файлов занимает огромное количество времени.

Цель :

Возможность выяснить, в чем проблема: в приложении Java / JVM или в ОС / оборудовании.

Используйте strace, например:

strace -p PID -e write -s 1024

он сбрасывает системные вызовы записи процесса. Максимальный размер строки 1024.