tencent cloud

Cloud Object Storage

동향 및 공지
릴리스 노트
제품 공지
제품 소개
제품 개요
기능 개요
적용 시나리오
제품 장점
기본 개념
리전 및 액세스 도메인
규격 및 제한
제품 요금
과금 개요
과금 방식
과금 항목
프리 티어
과금 예시
청구서 보기 및 다운로드
연체 안내
FAQ
빠른 시작
콘솔 시작하기
COSBrowser 시작하기
사용자 가이드
요청 생성
버킷
객체
데이터 관리
일괄 프로세스
글로벌 가속
모니터링 및 알람
운영 센터
데이터 처리
스마트 툴 박스 사용 가이드
데이터 워크플로
애플리케이션 통합
툴 가이드
툴 개요
환경 설치 및 설정
COSBrowser 툴
COSCLI 툴
COSCMD 툴
COS Migration 툴
FTP Server 툴
Hadoop 툴
COSDistCp 툴
HDFS TO COS 툴
온라인 도구 (Onrain Dogu)
자가 진단 도구
실습 튜토리얼
개요
액세스 제어 및 권한 관리
성능 최적화
AWS S3 SDK를 사용하여 COS에 액세스하기
데이터 재해 복구 백업
도메인 관리 사례
이미지 처리 사례
COS 오디오/비디오 플레이어 사례
데이터 다이렉트 업로드
데이터 보안
데이터 검증
빅 데이터 사례
COS 비용 최적화 솔루션
3rd party 애플리케이션에서 COS 사용
마이그레이션 가이드
로컬 데이터 COS로 마이그레이션
타사 클라우드 스토리지 데이터를 COS로 마이그레이션
URL이 소스 주소인 데이터를 COS로 마이그레이션
COS 간 데이터 마이그레이션
Hadoop 파일 시스템과 COS 간 데이터 마이그레이션
데이터 레이크 스토리지
클라우드 네이티브 데이터 레이크
메타데이터 가속
데이터 레이크 가속기 GooseFS
데이터 처리
데이터 처리 개요
이미지 처리
미디어 처리
콘텐츠 조정
파일 처리
문서 미리보기
장애 처리
RequestId 가져오기
공용 네트워크로 COS에 파일 업로드 시 속도가 느린 문제
COS 액세스 시 403 에러 코드 반환
리소스 액세스 오류
POST Object 자주 발생하는 오류
보안 및 컴플라이언스
데이터 재해 복구
데이터 보안
액세스 관리
자주 묻는 질문
인기 질문
일반 문제
과금
도메인 규정 준수 문제
버킷 설정 문제
도메인 및 CDN 문제
파일 작업 문제
로그 모니터링 문제
권한 관리
데이터 처리 문제
데이터 보안 문제
사전 서명 URL 관련 문제
SDK FAQ
툴 관련 문제
API 관련 문제
Agreements
Service Level Agreement
개인 정보 보호 정책
데이터 처리 및 보안 계약
연락처
용어집

클라이언트 모범 사례

PDF
포커스 모드
폰트 크기
마지막 업데이트 시간: 2025-11-24 11:23:52

고처리량 사례

클라이언트가 버킷에서 데이터를 읽을 때마다 읽는 크기는 fs.ofs.block.memory.trunk.byte 구성 항목으로 제어됩니다.
구성 항목
구성 항목 내용
설명
fs.ofs.block.memory.trunk.byte
1048576
객체 블록 크기, 단위는 바이트, 기본값 1048576, 즉 1MB
설명:
COSN SDK를 사용하는 경우, 위의 구성 항목 이름 앞에 fs.cosn.trsf를 추가해야 합니다. 예: fs.cosn.trsf.fs.ofs.prev.read.block.count.
고처리량 시나리오에서 클라이언트는 프리패치 블록 로직을 도입하여 파일을 여러 프리패치 블록으로 분할하고 메모리에 캐시하여 읽기 지연을 줄이고 처리량을 향상시킵니다. 다양한 시나리오의 처리량 요구를 충족시키기 위해 프리패치 블록 매개변수를 지정할 수 있습니다.

순차 읽기 시나리오

클라이언트 내부에서는 커서를 통해 현재 시나리오가 순차 읽기인지 감지하며, 순차 읽기인 경우 프리패치 로직을 활성화하고 그렇지 않은 경우 사용하지 않습니다. 프리패치 로직에서 클라이언트는 매번 캐시되는 프리패치 블록 개수를 고정하며, 관련 설정 항목은 다음과 같습니다. 모델 구성에 따라 관련 매개변수를 조정할 수 있습니다.
구성 항목
구성 항목 내용
설명
fs.ofs.prev.read.block.count
16
프리패치 블록 개수, 기본값은 16
fs.ofs.prev.read.block.release.enable
true
메모리에서 읽은 블록을 해제할지 여부, 기본값은 true
fs.ofs.block.max.read.memory.cache.mb
16
단일 파일 사용 가능 메모리 크기, 기본값은 16, 단위는 MB
설명:
OOM을 방지하기 위해 아래 메모리 사용 사례를 참고하여 전역 cache 모델을 제어할 수 있습니다.
fs.ofs.data.transfer.thread.count
32
버킷에서 프리패치 블록을 가져오는 IO 스레드 풀 코어 스레드 수
fs.ofs.data.transfer.max.thread.count
Integer.MAX_VALUE
IO 스레드 풀 최대 스레드 수

랜덤 읽기 시나리오

위에서 언급한 바와 같이, 클라이언트는 현재 시나리오를 감지하며 랜덤 읽기일 경우 프리패치 로직이 트리거되지 않습니다. 또한 이 시나리오에서는 실제 비즈니스 상황에 따라 fs.ofs.block.memory.trunk.byte 구성 항목을 조정하여 COS 버킷에서 매번 읽는 데이터 크기를 수정함으로써 랜덤 읽기 시나리오에서의 읽기 증폭을 방지할 것을 권장합니다.


클라이언트 메모리 사용 사례

성능 향상을 위해 OFS SDK는 데이터 업로드 및 다운로드 과정에서 데이터를 cache합니다. 여기서 cache는 메모리 cache와 디스크 cache를 포함하며, 업로드와 다운로드에서 각각 다르게 적용됩니다.
업로드: 메모리 cache + 디스크 cache
다운로드: 메모리 cache만
이 중에서 메모리 cache 블록은 필요에 따라 요청되며, 메모리 cache 블록을 우선적으로 요청합니다. 메모리 cache 블록이 부족한 경우 디스크 cache 블록을 요청합니다. 디스크 cache는 데이터 쓰기 과정에서 오프힙 메모리를 사용하여 온힙 메모리와 커널 모드 메모리 간의 복사(copy)를 줄여 데이터 쓰기 성능을 향상시킵니다.

여러 파일이 서로 영향을 미치는 것을 방지하기 위해(예: 파일이 닫히지 않고 리소스가 해제되지 않아 새로운 읽기/쓰기가 불가능한 경우), SDK의 기본 원칙은 단일 파일당 사용되는 cache 수를 제한하는 것입니다. 또한 OOM 문제를 방지하기 위해 클라이언트는 전역(파일 시스템 단위) 캐시 설정 옵션을 제공하며, 클라이언트 환경에 맞게 설정을 조정하여 최적의 성능을 구현할 수 있습니다.

단일 파일 cache 제어 모델

OFS SDK는 다음 두 가지 구성 항목을 통해 단일 파일의 cache 사용량을 제어합니다.
구성 항목
구성 항목 내용
설명
fs.ofs.block.max.memory.cache.mb
16
메모리 cache 사용량, 기본값은 16, 단위는 MB
fs.ofs.block.max.file.cache.mb
256
디스크 cache 사용량, 기본값은 256, 단위는 MB
설명:
COSN SDK를 사용하는 경우, 위의 구성 항목 이름 앞에 fs.cosn.trsf를 추가해야 합니다. 예: fs.cosn.trsf.fs.ofs.block.max.memory.cache.mb.

전역(파일 시스템 단위) cache 제어 모델

SDK는 OOM 문제를 피하기 위해 읽기 및 쓰기 요청에 대한 전역(파일 시스템 단위) cache 제어를 제공합니다. 자세한 설명은 다음과 같습니다.
업로드
다운로드
OFS SDK는 전역 업로드 메모리를 제어하기 위해 총 세 가지 구성 항목을 제공합니다.
구성 항목
구성 항목 내용
설명
fs.ofs.block.total.memory.cache.mb
0
업로드 최대 메모리 사용량, 기본값은 0(제어 안 함), 단위 MB
fs.ofs.block.total.memory.cache.percent
100
업로드 최대 메모리 사용 비율, 기본값은 100, 단위 %
fs.ofs.block.total.memory.jvm.heap.percent
0
최대 JVM 메모리 사용 비율, 기본값은 0(제어 없음), 단위 %
SDK는 총 두 가지 전역 제어를 제공합니다.
규칙 1: fs.ofs.block.total.memory.cache.mbfs.ofs.block.total.memory.cache.percent를 통해 업로드 최대 메모리 사용량을 제어합니다. 설정 후, 최대 메모리 사용량은 fs.ofs.block.total.memory.cache.mb * fs.ofs.block.total.memory.cache.percent / 100입니다. 설정 후 SDK는 계산된 전역 메모리 cache 크기 / 단일 파일 최대 크기 fs.ofs.block.max.memory.cache.mb를 기반으로 동시에 쓸 수 있는 파일 수를 계산하여 신호를 할당합니다. 새 파일을 열 때 1개의 세마포어를 요청하며, 요청 실패 시 디스크 cache를 강제로 사용합니다. 파일을 닫을 때 세마포어를 반환합니다.
규칙 2: fs.ofs.block.total.memory.jvm.heap.percent를 통해 최대 JVM 메모리를 제어합니다. 설정 후, SDK는 JVM 최대 메모리(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax()) * fs.ofs.block.total.memory.jvm.heap.percent / 100을 기준으로 결정합니다.

기본적으로 fs.ofs.block.total.memory.cache.mbfs.ofs.block.total.memory.jvm.heap.percent 값은 0으로, 메모리에 대한 어떠한 제어도 수행하지 않습니다. 두 구성 항목이 모두 0이 아닌 경우, 규칙 1(최대 메모리 사용량)이 규칙 2(최대 JVM 메모리 사용량)보다 우선순위가 높습니다.
CHDFS SDK는 전역 다운로드 메모리를 제어하기 위해 총 세 가지 구성 항목을 제공합니다.
구성 항목
구성 항목 내용
설명
fs.ofs.block.total.read.memory.cache.mb
0
다운로드 최대 메모리 사용량, 기본값은 0(제어 안 함), 단위 MB
fs.ofs.block.total.read.memory.cache.percent
100
다운로드 최대 메모리 사용 비율, 기본값은 100, 단위 %
SDK는 fs.ofs.block.total.read.memory.cache.mbfs.ofs.block.total.read.memory.cache.percent를 통해 다운로드 최대 메모리 사용량을 제어합니다. 설정 후, 최대 메모리 사용량은 fs.ofs.block.total.read.memory.cache.mb * fs.ofs.block.total.read.memory.cache.percent / 100이며, SDK는 계산된 전역 메모리 cache 크기 / 단일 파일 최대 크기 fs.ofs.block.max.memory.cache.mb를 기반으로 동시에 쓸 수 있는 파일 수를 계산하여 신호를 할당합니다. 새 파일을 열 때 1개의 세마포어를 요청하며, 요청 실패 시 디스크 cache를 강제로 사용합니다. 파일을 닫을 때 세마포어를 반환합니다. 큐를 통해 블로킹 메커니즘을 요청할 경유 세마포어가 부족하면 다른 파일이 닫히고 세마포어가 해제될 때까지 대기합니다.


도움말 및 지원

문제 해결에 도움이 되었나요?

피드백