написать впереди
Некоторое время я писал статью (ссылка на статью:Файл конфигурации Logback прописан так, а TPS увеличен в 10 раз), ответ был неплох, и многие пользователи сети тоже высказали свое мнение:
Резюме:
- Тест производительности Logback синхронный и асинхронный TPS мало чем отличаются
- Прошло 9102 года, а я до сих пор использую logback
Увидев мнения пользователей сети, я продолжил серию тестов и исследований.
серверное оборудование
- Процессор шесть ядер
- Память 8G
инструменты для тестирования
- JMeter
- JProfile
- APM(New Relic)
синхронное и асинхронное тестирование инфраструктуры журналирования logback
Предыдущие результаты теста имеют следующие проблемы:
- Количество тестовых выборок слишком мало (то есть количество потоков и количество выполнений циклов слишком мало, предыдущее количество потоков равно 100, цикл выполнен 1 раз, а общее количество отсчетов равно 100)
- Количество тестов слишком мало, выполняется только один тест, а результат случайный
- Результаты двух тестов были загрязнены, и количество образцов было разным.
В ответ на вышеуказанные проблемы, в повторном тесте количество потоков было изменено до 200, цикл был 100 раз в каждом тесте, общее количество сэмплов 2w, что в 200 раз больше, чем количество семплов в исходном испытание, и испытание повторяли 5 раз. Результаты новых тестов таковы:
Новые результаты тестирования показывают, что TPS, использующий структуру журналирования журналов, синхронно и асинхронно выводит журналы, не сильно отличается. Преобразование данных в столбчатую диаграмму более интуитивно понятно
Но я всегда чувствую, что запись логов асинхронно, поток, обращающийся к апи, будет быстрее отвечать клиенту, а в TPS должны быть явные изменения. Я не мог понять это и пошел в Интернет, чтобы проверить некоторую информацию, и там был ответ, который прошелAPM
Для мониторинга производительности будет большая разница между синхронным и асинхронным TPS, TPS должен иметь очевидные изменения (scream), поэтому используйте APM для мониторинга запросов, отправляемых JMeter (JMeter
Параметр установлен на количество потоков 100, Ramp-up Period равен 0, а цикл равен 100 раз):
Результаты теста APM следующие:
При мониторинге APM среднее значение TPS для синхронного выходного журнала составляет 333 об/мин в течение пяти минут выполнения. Обнаружено, что синхронизация TPS и асинхронное сравнение все еще не очевидны.
снова не удалось Хотя я этого не понимаю, позже я обсудил это с пользователями сети, и меня просветили.
Очевидные причины изменения TPS следующие: TPS — это количество транзакций, обрабатываемых в секунду, каждая транзакция включает следующие три процесса:
- Сервер запросов пользователей
- Собственная внутренняя обработка сервера
- Сервер возвращается к пользователю
Собственные внутренние запросы сервера включают доступ к базе данных, логику обработки и печать журналов.Единственная разница между синхронным и асинхронным заключается в способе печати журналов. По результатам тестирования время, затрачиваемое на печать журналов, составляет только 5,3% запросов на доступ к API, поэтому сокращение времени, затрачиваемого на печать журналов, не может значительно улучшить TPS, поскольку время печати, сетевые запросы и время бизнес-обработки можно игнорировать. Однако результаты тестирования показывают, что, хотя метод асинхронного вывода не может значительно улучшить TPS, он может сократить время, затрачиваемое на печать журналов. Поэтому рекомендуется использовать метод асинхронного вывода при использовании платформы ведения журналов.
log4j2 рекомендуется вместо logback
log4j2 – это обновленная версия log4j 1.x. В нем реализованы отличные схемы журналирования, исправлены некоторые проблемы и внесены некоторые важные улучшения. Значительно улучшена асинхронная производительность. В дополнение к асинхронной реализации Async Append. Кроме того, Async Журнал также предоставляется асинхронно.Асинхронная реализация Async Append аналогична асинхронной реализации logback, в то время как Async Log основан на библиотеке LMAX Disruptor и реализует высокопроизводительный асинхронный регистратор. Асинхронная реализация log4j2 в этом тесте основана на асинхронном журнале. Параметры теста JMeter такие же, как и в предыдущем тесте журнала, количество потоков — 200, количество циклов — 100, повторяются пять раундов. И файл конфигурации журнала logj2 в основном такой же, как и асинхронная конфигурация журнала, которая удовлетворяет:
- Журнал печати консоли
- Журнал выходных данных классификации
- Ролл по дням
- Тот же формат вывода журнала
Результаты теста следующие:
TPS увеличился в 6 раз! ! !И трудоемки для печати журнала почти статистики не выйдут Официальный отчет о тестовом отчете, Log4J2 и производительность входа в обратную плату по сравнению с более очевидной. Прикрепленный официальный отчет о испытании:Asynchronous Loggers for Low-Latency Logging
в заключении
- Если вы используете структуру журнала, рекомендуется использовать метод асинхронного вывода журнала.
- Выберите структуру ведения журнала, рекомендуется log4j2
Наконец прикрепил:тестовый код
Нелегко быть оригинальным.Если будете перепечатывать, укажите источник: https://juejin.cn/post/6844903926777511943 Автор: Там Хе Тяньтянь?
Также в последнее время есть небольшая цель, хочу подняться до LV3, я чувствую себя хорошо, статья, как точка прогулки Ну