naver / arcus-memcached

ARCUS memory cache server
https://github.com/naver/arcus
Apache License 2.0
70 stars 55 forks source link

engine config 정리 #541

Open jhpark816 opened 3 years ago

jhpark816 commented 3 years ago

engine config 관련한 잔여 작업으로 아래와 같이 정리합니다.

jhpark816 commented 2 years ago

2개 이상의 config file 설정이 존재하는 경우도 고려해 주세요. engine 일부 설정은 file1으로 설정하고, engine 다른(예, replication) 설정은 file2로 설정하는 경우를 말합니다.

jhpark816 commented 2 years ago

엔진 설정이 (1) 일반 구동 옵션과 (2) 엔진 전용 설정 옵션 (-e)으로 모두 제공되는 경우, 엔진 전용 설정 옵션으로 지정한 설정이 최종 반영되도록 합니다. 엔진 설정 파일로 구동한 경우에 중복 설정 처리 (https://github.com/naver/arcus-memcached/issues/454) 이슈를 참고 바랍니다.

jhpark816 commented 2 years ago

"engine 설정에 관한 구동 옵션은 engine 설정으로 이전"에 관한 설명입니다.

namsic commented 2 years ago
현재 memcached core에서 보관중인 engine 설정은 아래와 같습니다. settings 구조체(기본값) engine_config 설정 시 구동 옵션
settings.maxbytes (64 * 64 * 1024) cache_size= -m
settings.evict_to_free (1) eviction= -M
settings.sticky_limit (0) sticky_limit= -g
settings.factor (1.25) factor= -f
settings.chunk_size (48) chunk_size= -n
settings.prefix_delimiter (':') prefix_delimiter= -D
settings.max_list_size (50000) max_list_size= 환경변수
settings.max_set_size (50000) max_list_size= 환경변수
settings.max_map_size (50000) max_list_size= 환경변수
settings.max_btree_size (50000) max_list_size= 환경변수
namsic commented 1 year ago

현재 engine_config에 대한 stats 명령 사용 시 settings에서 값을 가져옵니다.

APPEND_STAT("sticky_limit", "%llu", (unsigned long long)settings.sticky_limit);

따라서 engine_config이 변경되는 경우 settings의 값을 함께 변경해 주어야 합니다. https://github.com/naver/arcus-memcached/blob/acdd417d3247d50da5816aec744ba01d237b2324/memcached.c#L8838-L8843 https://github.com/naver/arcus-memcached/blob/acdd417d3247d50da5816aec744ba01d237b2324/memcached.c#L15039-L15053

engine 설정은 settings에서 분리하고, get_config api를 활용해 engine config를 직접 얻어오는 형태로 변경하겠습니다.