CPU 사용량을 확인해 보려고 Test를 해봤다.
테스트 툴 Jmeter(인위적 request)
테스트 총 flush_thread, request 수 : 1개 , 10000 request
테스트 시 사용한 url : Test할 url
사용한 config 설정
<source>
@type tail
@log_level warn
<parse>
@type none
</parse>
path <path>
pos_file <path>/<fileName>.log.pos
tag access
</source>
<match access>
@type azurestorage
azure_storage_account <azure storage account>
azure_storage_access_key <azure storage key>
azure_container platformlogs
azure_storage_type blob
store_as text
auto_create_container true
path <path>
azure_object_key_format %{path}%{time_slice}_%{index}.%{file_extension}
time_slice_format %Y-%m-%d
# if you want to use ${tag} or %Y/%m/%d/ like syntax in path / s3_object_key_format,
# need to specify tag for ${tag} and time for %Y/%m/%d in <buffer> argument.
<buffer tag,time>
@type file
flush_mode interval
flush_at_shutdown true
flush_thread_count 1
chunk_limit_size 1m
flush_interval 60
path <path>
timekey 1h # 1시간 주기로 chunk 파일 생성 timekey 60: ["12:00:00", ..., "12:00:59"] default 10m
timekey_wait 1m
timekey_use_utc true # use utc
</buffer>
</match>
전과 달라진 buffer 설정
<buffer tag,time>
@type file
flush_mode interval
flush_at_shutdown true
flush_thread_count 1
chunk_limit_size 1m
flush_interval 60
path /var/log/fluent/access/azurestorageappendblob
timekey 1h # 1시간 주기로 chunk 파일 생성 timekey 60: ["12:00:00", ..., "12:00:59"] default 10m
timekey_wait 1m
timekey_use_utc true # use utc
</buffer>
flush_mode interval : interval 모드를 쓰면 밑에 설정한 flush_interval 의 시간이 흐르면 flush 를 해버림
flush_thread_count 1 : flush를 하는데 사용할 스레드 수
chunk_limit_size : chunk 파일의 제한 용량을 정함. 정한 용량을 넘어가면 자동으로 flush
flush_interval : 설정한 시간 10m, 10분 씩 지날 때 마다 자동으로 flush 함.
timekey : 1시간 마다 로그를 chunk 파일로 묶음
timekey_wait : time_key에서 설정한 시간이 지나고 flush 요청이 갈 때 몇 분 정도 기다렸다가 flush 할지의 시간
이러한 설정을 한 이유 :
time_key 나 flush_interval의 경우는 default인 시간이 있기 때문에(10분, 1분) 설정을 하지 않은 채로 만들면 10분마다 chunk 파일을 flush 하고 1분마다 flush 요청을 보내므로 CPU 사용률이 올라간다.
그리고 chunk_limit_size를 줘서 default 설정인 8MB를 하면 azure storage에 쌓이는 시간이 오래 걸릴 것이라고 생각이 되어( 1만건 정도 하는데 1400KB정도 되는 용량이 10분 정도 걸림) 1MB로 설정 하였다.
Request 보내기 전 CPU 사용률 ( COMMAND ruby를 보면 된다.)
10kb의 chunk_limit_size를 줬을 때 사용률( COMMAND ruby를 보면 된다.)
이 상태에서 2만건 정도의 요청을 하면 CPU 사용률은 78퍼센트까지 뛰어오른다.
그 반면에 1MB 정도의 사이즈의 chunk_limit_size 와 interval 모드 , interval 1분 , timekey 1h 를 했을 때의 사용률은 평소와 거의 변동이 없다.
'Fluentd > 적용' 카테고리의 다른 글
Fluentd + Azure Loganalytics (0) | 2022.07.25 |
---|---|
Fluentd Installation ( ruby gem ) (0) | 2022.07.25 |
Fluentd access log 500 에러만 남기기 (0) | 2022.06.23 |
Fluentd + MongoDB (0) | 2022.05.10 |
Fluentd + Newrelic (0) | 2022.04.29 |
Comment