[prev in list] [next in list] [prev in thread] [next in thread] 

List:       logback-dev
Subject:    [logback-dev] [JIRA] (LOGBACK-1512) let SCHEDULED_EXECUTOR_POOL_SIZE be configurable
From:       "QOS.CH (JIRA)" <noreply-jira () qos ! ch>
Date:       2020-03-26 9:04:00
Message-ID: JIRA.16185.1585213436000.95.1585213440140 () Atlassian ! JIRA
[Download RAW message or body]

Liang Xie created LOGBACK-1512:
----------------------------------

             Summary: let SCHEDULED_EXECUTOR_POOL_SIZE be configurable
                 Key: LOGBACK-1512
                 URL: https://jira.qos.ch/browse/LOGBACK-1512
             Project: logback
          Issue Type: Improvement
          Components: logback-classic, logback-core
    Affects Versions: 1.3.0-alpha5, 1.2.3, 1.1.11
         Environment: AWS m5.xlarge ec2 instance,    vCPU num: 4
            Reporter: Liang Xie
            Assignee: Logback dev list
         Attachments: cpu_spike.png, latency.png

Our log servers deployed logback component, the logback configuration contains tens \
of appenders,   this is one of the appender definition: {quote}<appender \
name="rawdata"  class="ch.qos.logback.core.rolling.RollingFileAppender">
 <file>/data/xxx/rawdata/rawdata.log</file>
 <encoder>
 <pattern>%m%n</pattern>
 </encoder>
 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 <fileNamePattern>/data/xxx/rawdata/rawdata.log.%d\{yyyy-MM-dd-HH}.gz</fileNamePattern>
  </rollingPolicy>
 </appender>
{quote}
 

please note the "fileNamePattern" value,   we use gzip compression,  it means in each \
hour beginning,  all the tens of files are renamed to tmp files,  then be compressed \
in the thread pool.   Currently, this thread pool core size is immutable, a fixed \
value: 8,  which came from [https://github.com/qos-ch/logback/commit/b946551439134] 

In an small ec2 env with tens of big log files(a few of our rolling raw log files \
size are 10 Gb), say 4 vcore,  the compression will be last several minutes with all \
vcores running in full speed.

It will disturb the normal user request latency espencially under a high throughput \
env.

Our proposed solution are as following:

1. let SCHEDULED_EXECUTOR_POOL_SIZE be configurable,   it is meaningful since the \
logback users have different cpu core configs,  different requirements(latency vs \
throughput)

2. let the compression level be configurable,  currently,  the logback uses JDK's \
GZIPOutputStream class, which deflate algorithm is DEFAULT_COMPRESSION always.  It \
would be great if we could make it be configurable.

 

We forked a branch,  after updating SCHEDULED_EXECUTOR_POOL_SIZE  to 1 and deflate \
algorithm to BEST_SPEED,    we have observed the each hour beginning's cpu spikes \
were relieved ,   and the user request latency is more stable than before

 

Any comments are welcome



--
This message was sent by Atlassian JIRA
(v7.3.1#73012)
_______________________________________________
logback-dev mailing list
logback-dev@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-dev


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic