Спам логов workshop на сервере KF2: причины и обходные пути
Заметка администратора сервера о проблеме конца 2017 - начала 2018 года: выделенный сервер Killing Floor 2, подписанный на множество предметов Workshop, снова и снова пишет строку со всеми номерами подписок. В обновлении к руководству сказано, что баг устранён патчем от 27 марта 2018 (обновление 1062: исправлена ошибка выделенных серверов, при которой через какое-то время создавались логи, потреблявшие много CPU), но обходные пути остаются хорошим примером борьбы с неконтролируемыми логами. См. также Оптимизация выделенного сервера.
Проблема
Чем больше предметов Workshop подключено, тем хуже. На сервере автора с более чем 300 картами одна строка лога содержала все ID, и писалась она каждую секунду круглосуточно. Спустя время это вызывает заметную нагрузку на диск и CPU и огромные бесполезные логи.
Размеры логов всего через несколько часов работы.
Способ 1: запустить клиент Steam до сервера
Если запустить клиент Steam перед сервером, логирование прекращается (и, возможно, обновление предметов Workshop на сервере).
Способ 2: запретить доступ к файлам логов
Вероятно, самый практичный вариант. В \kf2server\Binaries\Win64\logs запретите учётной записи, под которой работает сервер, запись, дополнение и удаление content_log.txt и workshop_log.txt:
- Правый клик по файлу, Свойства, вкладка Безопасность, Дополнительно.
- Изменить разрешения, Добавить, введите имя пользователя сервера.
- Отметьте «Запретить» для «Создание файлов / запись данных», «Создание папок / дозапись данных» и «Удаление».
- Подтвердите все окна.
Способ 3: hex-правка steamclient64.dll
Симлинки на NUL в Windows работали плохо. Помогла замена имён файлов логов на недопустимые: файлы создаются (только с первой частью имени), но ничего не записывается:
- Сделайте копию
Binaries\Win64\steamclient64.dll. - Откройте его в hex-редакторе и найдите
content_log. - Замените подчёркивание на двоеточие.
- То же сделайте для
workshop_log.
Способ 4: убрать steamclient64.dll
Переименуйте его (например, в steamclient64.dll.orig), чтобы можно было откатить. Это почти наверняка сломает обновление предметов Workshop на сервере.
Linux
Создайте символические ссылки на нулевое устройство:
cd <каталог логов>
ln -sf /dev/null content_log.txt
ln -sf /dev/null workshop_log.txt
(В оригинале аргументы указаны в обратном порядке; у ln -sf ЦЕЛЬ ИМЯ_ССЫЛКИ сначала идёт цель.)
Подавление обычного шума в логах
В секции [Core.System] файла PCServer-KFEngine.ini добавьте:
Suppress=NetComeGo
Suppress=Log
NetComeGo забивает основной Launch.log (KFGame\Logs) проверками обновлений каждого предмета Workshop, а Log - общий тег, используемый при проверке состояния каждого предмета при загрузке. Автор на тестовом сервере подавляет ещё и DevOnline. Правила подавления удобны для читаемых логов при отладке модов.
Вопросы и ответы
- Исправили ли баг с логированием workshop?
- Да. Обновление 1062 (27 марта 2018) исправило ошибку выделенных серверов, из-за которой со временем генерировались логи, сильно нагружающие процессор.
- Где находятся разрастающиеся логи?
- content_log.txt и workshop_log.txt в каталоге Binaries/Win64/logs сервера.