すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:ロードバランシング測定関数

最終更新日:Oct 09, 2024

分散システムに負荷分散を実装する操作を実行する前に、システムの負荷分散度を正確に測定する必要があります。 このトピックでは、負荷分散測定関数の構文について説明します。 このトピックでは、関数の使用方法の例も提供します。

背景情報

負荷分散測定機能が使用されるサンプルログには、クラスターID、サーバーID、時間、CPU負荷、メモリ負荷、およびネットワーク帯域幅負荷のインデックスフィールドが含まれます。 詳細については、「インデックスの作成」をご参照ください。

image

サンプルログ:

{"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:00:00"}
{"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:01:00"}
{"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:02:00"}
{"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:03:00"}
{"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:04:00"}
{"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:05:00"}
{"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:06:00"}
{"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:07:00"}
{"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:08:00"}
{"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:09:00"}

ロードバランシング測定関数

関数

構文

説明

戻り値のデータ型

how_balanced関数

how_balanced(array(array(double)) load_matrix)

分散システムの負荷分散度を測定します。 この関数はarray_agg関数と一緒に使用する必要があります。 詳細は、「array_agg関数」をご参照ください。 戻り値は負荷分散度を示します。 有効値: (0,1) 。 値が1に近いほど、負荷分散の度合いが高いことを示します。 値1は、全負荷分散を示します。

double

how_balanced関数

how_balanced関数は、分散システムの負荷分散度を測定します。 この関数はarray_agg関数と一緒に使用する必要があります。 詳細は、「array_agg関数」をご参照ください。

double how_balanced(array(array(double)) load_matrix)

パラメーター

説明

load_matrix

ロードマトリックス。 各行は、サーバのロード時系列ベクトルを指定する。

  • クエリ文

    * | with server_time_series as
    (
        select cluster_id,
            server_id,
            array_agg(to_unixtime(date_parse(time_period, '%Y-%m-%d %H:%i:%s'))) as time_periods,
            array_agg(cpu_load + ram_load + network_load) as metric_values
        from log
        where time_period >= '2024-01-01 00:00:00'
          and time_period < '2024-01-02 00:00:00'
        group by cluster_id, server_id
    ),
    
    imputed_server_series as
    (
        select cluster_id,
            server_id,
            ts_fill_missing(
                time_periods,
                metric_values,
                to_unixtime(date_parse('2024-01-01 00:00:00', '%Y-%m-%d %H:%i:%s')),
                to_unixtime(date_parse('2024-01-02 00:00:00', '%Y-%m-%d %H:%i:%s')),
                '1 minute', 'value=0') as imputed_time_series
        from server_time_series
    )
    
    select cluster_id,
        how_balanced(array_agg(imputed_time_series[2])) as balance
    from imputed_server_series
    group by cluster_id
  • クエリおよび分析の結果

    balanceは負荷分散度を示します。 有効値: (0,1) 。 値が1に近いほど、負荷分散の度合いが高いことを示します。 値1は、全負荷分散を示します。

    cluster_id

    バランス

    G1

    0.5