tencent cloud

Cloud Object Storage

最新情報とお知らせ
製品アップデート情報
製品のお知らせ
製品概要
製品概要
機能概要
応用シナリオ
製品の優位性
基本概念
リージョンとアクセスドメイン名
仕様と制限
製品の課金
課金概要
課金方式
課金項目
無料利用枠
記帳例
請求書の確認とダウンロード
お支払い遅れについて
よくある質問
クイックスタート
コンソールクイックスタート
COSBrowserクイックスタート
ユーザーガイド
リクエストの作成
バケット
オブジェクト
データ管理
バッチ処理
グローバルアクセラレーション
監視とアラーム
運用管理センター
データ処理
インテリジェントツールボックス使用ガイド
データワークフロー
アプリ統合
ツールガイド
ツール概要
環境のインストールと設定
COSBrowserツール
COSCLIツール
COSCMDツール
COS Migrationツール
FTP Serverツール
Hadoopツール
COSDistCpツール
HDFS TO COSツール
オンラインツール (Onrain Tsūru)
セルフ診断ツール
実践チュートリアル
概要
アクセス制御と権限管理
パフォーマンスの最適化
AWS S3 SDKを使用したCOSアクセス
データディザスタリカバリバックアップ
ドメイン名管理の実践
画像処理の実践
COSオーディオビデオプレーヤーの実践
データセキュリティ
データ検証
COSコスト最適化ソリューション
サードパーティアプリケーションでのCOSの使用
移行ガイド
サードパーティクラウドストレージのデータをCOSへ移行
データレークストレージ
クラウドネイティブデータレイク
メタデータアクセラレーション
データアクセラレーター GooseFS
データ処理
データ処理概要
画像処理
メディア処理
コンテンツ審査
ファイル処理
ドキュメントプレビュー
トラブルシューティング
RequestId取得の操作ガイド
パブリックネットワーク経由でのCOSへのファイルアップロード速度の遅さ
COSへのアクセス時に403エラーコードが返される
リソースアクセス異常
POST Objectの一般的な異常
セキュリティとコンプライアンス
データ災害復帰
データセキュリティ
クラウドアクセスマネジメント
よくある質問
よくあるご質問
一般的な問題
従量課金に関するご質問
ドメインコンプライアンスに関するご質問
バケット設定に関する質問
ドメイン名とCDNに関するご質問
ファイル操作に関するご質問
権限管理に関するご質問
データ処理に関するご質問
データセキュリティに関するご質問
署名付きURLに関するご質問
SDKクラスに関するご質問
ツール類に関するご質問
APIクラスに関するご質問
Agreements
Service Level Agreement
プライバシーポリシー
データ処理とセキュリティ契約
連絡先
用語集

クライアントサイドのベストプラクティス

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-11-24 11:23:01

ハイスループットを実現するためのプラクティス

クライアントがバケットから読み取るデータサイズは、設定項目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
1つのファイルが使用可能なメモリ量。デフォルトでは16、単位はMBです
説明:
OOMを避けるため、以下のメモリ使用に関するプラクティスを参考に、グローバルなキャッシュモデルを制御できます。
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はデータのアップロードおよびダウンロード中にデータのキャッシュが行われます。ここでのキャッシュにはメモリキャッシュとディスクキャッシュがあり、アップロードとダウンロードで適用方法が異なります。
アップロード:メモリキャッシュ + ディスクキャッシュを使用
ダウンロード:メモリキャッシュのみを使用
メモリキャッシュブロックは必要に応じて確保されます。まずメモリキャッシュブロックの確保が試みられ、メモリキャッシュブロックが不足すると、ディスクキャッシュブロックの確保が試みられます。ディスクキャッシュは、データ書き込みプロセス中にオフヒープメモリを使用することで、ヒープメモリとカーネル空間のメモリ間でのコピーを減らし、データ書き込みのパフォーマンスを向上させます。

複数のファイルが互いに影響し合う(例:あるファイルが閉じられずリソースが解放されないため、新しい読み書き操作が行えない)のを避けるため、SDKの全体的なデフォルト原則は、単一ファイルが使用するキャッシュ量を制御することです。同時に、OOM問題を回避するため、クライアントではグローバル(ファイルシステム粒度)のキャッシュ設定項目が提供されています。クライアント環境に応じて設定を調整し、最適なパフォーマンスを実現します。

単一ファイルでのキャッシュ制御モデル

OFS SDKは、以下の2つの設定項目を使用して、単一ファイルのキャッシュ使用量をそれぞれ制御します。
設定項目
設定項目の詳細
説明
fs.ofs.block.max.memory.cache.mb
16
メモリキャッシュの使用量。デフォルトでは16、単位はMBです
fs.ofs.block.max.file.cache.mb
256
ディスクキャッシュの使用量。デフォルトでは256、単位はMBです
説明:
COSN SDKをご利用の場合、上記の設定項目名の前にfs.cosn.trsfを追加する必要があります。例:fs.cosn.trsf.fs.ofs.block.max.memory.cache.mb

グローバル(ファイルシステム粒度)でのキャッシュ制御モデル

SDKは、OOM問題を回避するため、読み取りと書き込みの二つのリクエストに対して、グローバル(ファイルシステム粒度)でのキャッシュ制御を提供しています。詳細は以下の通りです。
アップロード
ダウンロード
OFS SDKは、グローバルなアップロード時のメモリを制御するために、合計3つの設定項目を提供しています。
設定項目
設定項目の詳細
説明
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は、2つのグローバル制御ルールを提供します。
ルール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は算出されたグローバルメモリキャッシュサイズと、単一ファイルの最大サイズfs.ofs.block.max.memory.cache.mbに基づき、同時に書き込み可能なファイル数を計算し、それに応じてセマフォを割り当てます。新しいファイルを開く際にセマフォを1つ要求し、要求に失敗した場合は強制的にディスクキャッシュが使用されます。ファイルが閉じられると、セマフォは返却されます。
ルール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は、グローバルなダウンロード時のメモリを制御するために、合計3つの設定項目を提供しています。
設定項目
設定項目の詳細
説明
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は算出されたグローバルメモリキャッシュサイズと、単一ファイルの最大サイズfs.ofs.block.max.memory.cache.mbに基づき、同時に書き込み可能なファイル数を計算し、それに応じてセマフォを割り当てます。新しいファイルを開く際にセマフォを1つ要求し、要求に失敗した場合は強制的にディスクキャッシュが使用されます。ファイルが閉じられると、セマフォは返却されます。セマフォの要求はキューを通じてブロッキングメカニズムを実装しており、セマフォが不足している場合は、他のファイルが閉じられてセマフォが解放されるのを待ちます。


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック