펑션 latency 관련된 문의 드립니다.

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 베이스/채팅/데이터베이스/월드 SDK 버전 : 1.02
  • 프로젝트명 : TEST
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

뒤끝 개발팀을 통한 별도의 기술지원이 작업이 필요한 요청은 help@backnd.com 으로 문의해주시기 바랍니다.

안녕하세요
가챠 기능을 만들어 테스트하는 도중에 latency가 너무 안나와서 문의 드립니다.

  1. user_info 조회 후 재화가 있는 지 파악
  2. 펑션 - 확률 기능을 이용해서 뽑기 진행
  3. 뽑기 결과 및 재화를 DB에 저장
  4. 클라에 가챠 정보를 전송

image
첫 가챠는 매우 느리게 진행이되며 이후 부터는 300~800ms가량 소요되고 있는 상황입니다.
클라 >> 서버 >> 클라 반응이 즉각적이면 좋겠는데 이부분 어디를 개선하면 좋을 지 의견 부탁드립니다.

가챠쪽 테스트 코드 및 펑션 로그 첨부해드립니다. 감사합니다.

using BackEnd;
using LitJson;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;

namespace BackendFunction
{
public partial class BFunc
{
private enum EquipmentGachaCategory
{
Weapon,
Ring,
Artifact,
}

    private sealed class EquipmentGachaConfig
    {
        public string PoolInfoChartName;
        public string CostChartName;
        public string ProbabilityCardName;
        public string MasterChartName;
        public string EquipmentKeyPrefix;
    }

    private static readonly Dictionary<EquipmentGachaCategory, EquipmentGachaConfig> EquipmentGachaConfigs = new()
    {
        [EquipmentGachaCategory.Weapon] = new EquipmentGachaConfig
        {
            PoolInfoChartName = "WeaponGachaPoolInfo",
            CostChartName = "WeaponGachaCost",
            ProbabilityCardName = "WeaponGacha_Lv1",
            MasterChartName = "WeaponMaster",
            EquipmentKeyPrefix = "EQUIP",
        },
        [EquipmentGachaCategory.Ring] = new EquipmentGachaConfig
        {
            PoolInfoChartName = "RingGachaPoolInfo",
            CostChartName = "RingGachaCost",
            ProbabilityCardName = "RingGacha_Lv1",
            MasterChartName = "RingMaster",
            EquipmentKeyPrefix = "RING",
        },
        [EquipmentGachaCategory.Artifact] = new EquipmentGachaConfig
        {
            PoolInfoChartName = "ArtifactGachaPoolInfo",
            CostChartName = "ArtifactGachaCost",
            ProbabilityCardName = "ArtifactGacha_Lv1",
            MasterChartName = "ArtifactMaster",
            EquipmentKeyPrefix = "ARTIFACT",
        },
    };

    private static readonly Dictionary<EquipmentGachaCategory, Dictionary<int, JsonData>> _gachaPoolInfoCaches = new();
    private static readonly Dictionary<EquipmentGachaCategory, Dictionary<int, JsonData>> _gachaCostCaches = new();
    private static readonly Dictionary<EquipmentGachaCategory, Dictionary<int, JsonData>> _masterCaches = new();
    private static readonly Dictionary<EquipmentGachaCategory, int> _probabilityFileIdCaches = new();

    private Stream ReqEquipmentGacha() => ExecuteEquipmentGachaByCostIndex(EquipmentGachaCategory.Weapon, "ReqEquipmentGacha", ParseRequiredInt("GachaInfoIndex"), ParseRequiredInt("GachaCostIndex"), ParseRequiredInt("CostIndex"));

    private Stream ReqEquipmentGachaCount() => ExecuteEquipmentGachaByCount(EquipmentGachaCategory.Weapon, "ReqEquipmentGachaCount", ParseRequiredInt("GachaInfoIndex"), ParseRequiredInt("GachaCount"), ParseRequiredInt("CostIndex"));

    private Stream ReqWeaponGacha() => ExecuteEquipmentGachaByCostIndex(EquipmentGachaCategory.Weapon, "ReqWeaponGacha", ParseRequiredInt("GachaInfoIndex"), ParseRequiredInt("GachaCostIndex"), ParseRequiredInt("CostIndex"));

    private Stream ReqWeaponGachaCount() => ExecuteEquipmentGachaByCount(EquipmentGachaCategory.Weapon, "ReqWeaponGachaCount", ParseRequiredInt("GachaInfoIndex"), ParseRequiredInt("GachaCount"), ParseRequiredInt("CostIndex"));

    private Stream ReqRingGacha() => ExecuteEquipmentGachaByCostIndex(EquipmentGachaCategory.Ring, "ReqRingGacha", ParseRequiredInt("GachaInfoIndex"), ParseRequiredInt("GachaCostIndex"), ParseRequiredInt("CostIndex"));

    private Stream ReqRingGachaCount() => ExecuteEquipmentGachaByCount(EquipmentGachaCategory.Ring, "ReqRingGachaCount", ParseRequiredInt("GachaInfoIndex"), ParseRequiredInt("GachaCount"), ParseRequiredInt("CostIndex"));

    private Stream ReqArtifactGacha() => ExecuteEquipmentGachaByCostIndex(EquipmentGachaCategory.Artifact, "ReqArtifactGacha", ParseRequiredInt("GachaInfoIndex"), ParseRequiredInt("GachaCostIndex"), ParseRequiredInt("CostIndex"));

    private Stream ReqArtifactGachaCount() => ExecuteEquipmentGachaByCount(EquipmentGachaCategory.Artifact, "ReqArtifactGachaCount", ParseRequiredInt("GachaInfoIndex"), ParseRequiredInt("GachaCount"), ParseRequiredInt("CostIndex"));

    private Stream ExecuteEquipmentGachaByCostIndex(
        EquipmentGachaCategory category,
        string functionName,
        int gachaInfoIndexParam,
        int gachaCostIndexParam,
        int costIndexParam)
    {
        var requestId = Backend.Content.ContainsKey("RequestId")
            ? Backend.Content["RequestId"].ToString()
            : string.Empty;
        FunctionHelpers.TryGetContentString(requestId, out requestId);

        var config = GetConfig(category);
        var infoRow = GetGachaPoolInfoRow(category, gachaInfoIndexParam);
        if (!FunctionHelpers.TryGetRowInt(infoRow, "GachaPoolId", out int infoPoolId))
            throw new ValidationException($"{config.PoolInfoChartName}.row GachaPoolId가 없습니다.");

        var costRow = GetGachaCostRow(category, gachaCostIndexParam);
        if (!FunctionHelpers.TryGetRowInt(costRow, "GachaPoolId", out int costPoolId))
            throw new ValidationException($"{config.CostChartName}.row GachaPoolId가 없습니다.");
        if (infoPoolId != costPoolId)
            throw new ValidationException($"가챠 풀 불일치 info={infoPoolId}, cost={costPoolId}");

        if (!FunctionHelpers.TryGetRowInt(costRow, "CostIndex", out int expectedCostIndex))
            throw new ValidationException($"{config.CostChartName}.row CostIndex가 없습니다.");
        if (expectedCostIndex != costIndexParam)
            throw new ValidationException($"비용 인덱스 불일치 request={costIndexParam}, table={expectedCostIndex}");

        return ExecuteEquipmentGachaInternal(category, functionName, requestId, gachaInfoIndexParam, infoPoolId, costRow);
    }

    private Stream ExecuteEquipmentGachaByCount(
        EquipmentGachaCategory category,
        string functionName,
        int gachaInfoIndexParam,
        int gachaCountParam,
        int costIndexParam)
    {
        
        //var requestId = Backend.Content.ContainsKey("RequestId")
        //    ? Backend.Content["RequestId"].ToString()
        //    : string.Empty;
        //FunctionHelpers.TryGetContentString(requestId, out requestId);
        
        return ExecuteEquipmentGachaInternal(category, functionName, "", gachaInfoIndexParam, 0, null);
    }



    private const string WEAPON_FILE_ID = "18951";
    private List<int> items = new();

    // 장비가챠를 처리합니다.
    private Stream ExecuteEquipmentGachaInternal(EquipmentGachaCategory category, string functionName,
        string requestId, int gachaInfoIndexParam, int infoPoolId, JsonData costRow)
    {
        var sw = Stopwatch.StartNew();
        var config = GetConfig(category);

        // 유저 정보를 가져온다.
        var userRow = ValidateAndGetUserRow("owner_inDate", "Gold", "EquipmentJson");
        
        ValidateAndGetRowDates(userRow, out string rowInDate, out string ownerInDate);
        if (!FunctionHelpers.TryGetRowLong(userRow, "Gold", out long currentGold))
            currentGold = 0;
        var equipmentState = LoadEquipmentState(userRow);
        
        int gachaCount = 11;
        int bonusCount = 0;
        int totalCount = gachaCount + bonusCount;
        
        var bro = Backend.Probability.GetProbabilitys(WEAPON_FILE_ID, totalCount);
        if (!bro.IsSuccess())
            throw new ValidationException($"Probability 가챠 실패: {bro}");
        
        string probabilityRawJson = bro.GetReturnValue() ?? string.Empty;
        Console.WriteLine($"[SERVER] BootId={ServerBootId} {functionName} probability raw json: {probabilityRawJson}");

        var probabilityToken = ParseJsonToken(probabilityRawJson);
        var rows = ExtractProbabilityRows(probabilityToken, _ => HasAnyProbabilityKey(_, "EquipmentId"));

        if (rows.Count == 0)
            throw new ValidationException("Probability 가챠 결과가 비어 있습니다.");

        //return Backend.JsonToStream(new JObject { }.ToString());
        items.Clear();

        for (int i = 0; i < rows.Count; i++)
        {
            int equipmentId = GetInt(rows[i]["EquipmentId"]);
            //var masterRow = GetGachaMasterRow(category, equipmentId);

            //if (!TryGetEquipmentGrade(masterRow, out int grade) || !TryGetEquipmentTier(masterRow, out int tier))
            //{
            //    throw new ValidationException($"장비 마스터 차트에서 Grade/Tier를 찾을 수 없습니다. EquipmentId={equipmentId}");
            //}                

            items.Add(equipmentId);

            //var item = new JObject
            //{
            //    ["EquipmentId"] = equipmentId,
            //    ["Grade"] = grade,
            //    ["Tier"] = tier,
            //};
            //items.Add(item);
        }

        ApplyEquipmentGachaRewards(equipmentState, items);
        equipmentState.Normalize();

        string updatedEquipmentJson = JsonConvert.SerializeObject(equipmentState);
        string persistedEquipmentJson = SerializeEquipmentStateForStorage(equipmentState);
        PersistEquipmentGachaState(rowInDate, ownerInDate, currentGold, persistedEquipmentJson);

        var result = new JObject
        {
            ["Success"] = true,
            //["RequestId"] = requestId,
            ["FunctionName"] = functionName,
            ["GachaInfoIndex"] = gachaInfoIndexParam,
            ["GachaPoolId"] = infoPoolId,
            ["GachaCount"] = gachaCount,
            ["DrawCount"] = totalCount,
            ["BonusCount"] = bonusCount,
            ["TotalCount"] = totalCount,
            //["CostIndex"] = costIndex,
            //["CostCount"] = costCount,
            ["Gold"] = currentGold,
            ["EquipmentJson"] = updatedEquipmentJson,
            //["Results"] = items,
            ["EquipmentIds"] = new JArray(items),
            ["Debug"] = new JObject
            {
                ["Category"] = category.ToString(),
                ["MasterChart"] = config.MasterChartName,
                ["ProbabilityCardName"] = config.ProbabilityCardName,
                ["ProbabilityFileId"] = WEAPON_FILE_ID,
                ["MasterFound"] = true,
                ["FirstEquipmentId"] = items.Count > 0 ? items[0] : 0,
            },
        };

        Console.WriteLine($"[무기가챠] {functionName} total elapsed ({sw.ElapsedMilliseconds} ms)");

        return Backend.JsonToStream(result.ToString());
    }

    // 장비 가챠 결과로 획득한 장비의 카운트를 올린다.
    private static void ApplyEquipmentGachaRewards(EquipmentStateDto state, List<int> rolledEquipmentIds)
    {
        if (state == null || rolledEquipmentIds == null)
            return;

        for (int i = 0; i < rolledEquipmentIds.Count; i++)
        {
            uint equipmentId = (uint)rolledEquipmentIds[i];
            var record = state.GetOrCreateRecord(equipmentId);
            record.Count += 1;
        }
    }

    // 장비 가챠 결과와 비용 정보를 user_info에 저장한다.
    private static void PersistEquipmentGachaState(string rowInDate, string ownerInDate, long currentGold, string equipmentJson)
    {
        var sw = Stopwatch.StartNew();
        var param = new Param();
        param.Add("Gold", currentGold);
        param.Add("EquipmentJson", equipmentJson);

        var updateBro = Backend.GameData.UpdateV2("user_info", rowInDate, ownerInDate, param);
        Console.WriteLine($"[SERVER] BootId={ServerBootId} PersistEquipmentGachaState UpdateV2 complete ({sw.ElapsedMilliseconds} ms)");
        if (!updateBro.IsSuccess())
            throw new ValidationException("장비 가챠 결과 저장 실패: " + updateBro.ToString());
    }

    private static EquipmentGachaConfig GetConfig(EquipmentGachaCategory category)
    {
        if (EquipmentGachaConfigs.TryGetValue(category, out var config))
            return config;

        throw new ValidationException($"정의되지 않은 장비 가챠 카테고리: {category}");
    }

    private static int GetDrawCount(JsonData costRow)
    {
        return FunctionHelpers.TryGetRowInt(costRow, "GachaCount", out int parsedGachaCount)
            ? parsedGachaCount
            : FunctionHelpers.TryGetRowInt(costRow, "DrawCount", out int parsedDrawCount)
                ? parsedDrawCount
                : 1;
    }

    private static int GetBonusCount(JsonData costRow)
    {
        return FunctionHelpers.TryGetRowInt(costRow, "BonusCount", out int parsedBonusCount)
            ? parsedBonusCount
            : 0;
    }

    private static JsonData GetGachaPoolInfoRow(EquipmentGachaCategory category, int gachaInfoIndex)
    {
        var cache = LoadGachaPoolInfoCache(category);
        if (cache.TryGetValue(gachaInfoIndex, out var row))
            return row;

        var config = GetConfig(category);
        throw new ValidationException($"{config.PoolInfoChartName}에서 UniqueIndex={gachaInfoIndex}를 찾을 수 없습니다.");
    }

    private static JsonData GetGachaCostRow(EquipmentGachaCategory category, int gachaCostIndex)
    {
        var cache = LoadGachaCostCache(category);
        if (cache.TryGetValue(gachaCostIndex, out var row))
            return row;

        var config = GetConfig(category);
        throw new ValidationException($"{config.CostChartName}에서 UniqueIndex={gachaCostIndex}를 찾을 수 없습니다.");
    }

    private static JsonData GetGachaCostRowByCount(EquipmentGachaCategory category, int gachaPoolId, int gachaCount)
    {
        var cache = LoadGachaCostCache(category);
        foreach (var row in cache.Values)
        {
            if (!FunctionHelpers.TryGetRowInt(row, "GachaPoolId", out int rowPoolId))
                continue;
            if (rowPoolId != gachaPoolId)
                continue;

            int rowCount = GetDrawCount(row) + GetBonusCount(row);
            if (rowCount == gachaCount)
                return row;
        }

        var config = GetConfig(category);
        throw new ValidationException($"{config.CostChartName}에서 GachaPoolId={gachaPoolId}, GachaCount={gachaCount}를 찾을 수 없습니다.");
    }

    private static JsonData GetGachaMasterRow(EquipmentGachaCategory category, int equipmentId)
    {
        var cache = LoadMasterCache(category);
        if (cache.TryGetValue(equipmentId, out var row))
            return row;

        var config = GetConfig(category);
        throw new ValidationException($"{config.MasterChartName}에서 EquipmentId={equipmentId}를 찾을 수 없습니다.");
    }

    private static Dictionary<int, JsonData> LoadGachaPoolInfoCache(EquipmentGachaCategory category)
    {
        if (_gachaPoolInfoCaches.TryGetValue(category, out var cached))
            return cached;

        var config = GetConfig(category);
        var sw = Stopwatch.StartNew();
        var bro = Backend.Chart.GetChartContents(ChartIdManager.GetChartId(config.PoolInfoChartName));
        Console.WriteLine($"{WeaponGachaServerLogPrefix} PoolInfo chart fetch requested ({sw.ElapsedMilliseconds} ms so far), chart={config.PoolInfoChartName}");
        if (!bro.IsSuccess())
            throw new ValidationException($"{config.PoolInfoChartName} 차트 조회 실패: " + bro.ToString());

        var cache = new Dictionary<int, JsonData>();
        foreach (JsonData row in bro.FlattenRows())
        {
            if (FunctionHelpers.TryGetRowInt(row, "UniqueIndex", out int uniqueIndex))
                cache[uniqueIndex] = row;
        }

        _gachaPoolInfoCaches[category] = cache;
        Console.WriteLine($"{WeaponGachaServerLogPrefix} PoolInfo cache built ({sw.ElapsedMilliseconds} ms), category={category}, entries={cache.Count}");
        return cache;
    }

    private static Dictionary<int, JsonData> LoadGachaCostCache(EquipmentGachaCategory category)
    {
        if (_gachaCostCaches.TryGetValue(category, out var cached))
            return cached;

        var config = GetConfig(category);
        var sw = Stopwatch.StartNew();
        var bro = Backend.Chart.GetChartContents(ChartIdManager.GetChartId(config.CostChartName));
        Console.WriteLine($"{WeaponGachaServerLogPrefix} Cost chart fetch requested ({sw.ElapsedMilliseconds} ms so far), chart={config.CostChartName}");
        if (!bro.IsSuccess())
            throw new ValidationException($"{config.CostChartName} 차트 조회 실패: " + bro.ToString());

        var cache = new Dictionary<int, JsonData>();
        foreach (JsonData row in bro.FlattenRows())
        {
            if (FunctionHelpers.TryGetRowInt(row, "UniqueIndex", out int uniqueIndex))
                cache[uniqueIndex] = row;
        }

        _gachaCostCaches[category] = cache;
        Console.WriteLine($"{WeaponGachaServerLogPrefix} Cost cache built ({sw.ElapsedMilliseconds} ms), category={category}, entries={cache.Count}");
        return cache;
    }

    private static Dictionary<int, JsonData> LoadMasterCache(EquipmentGachaCategory category)
    {
        if (_masterCaches.TryGetValue(category, out var cached))
            return cached;

        var config = GetConfig(category);
        var sw = Stopwatch.StartNew();
        var bro = Backend.Chart.GetChartContents(ChartIdManager.GetChartId(config.MasterChartName));
        Console.WriteLine($"{WeaponGachaServerLogPrefix} Master chart fetch requested ({sw.ElapsedMilliseconds} ms so far), chart={config.MasterChartName}");
        if (!bro.IsSuccess())
            throw new ValidationException($"{config.MasterChartName} 차트 조회 실패: " + bro.ToString());

        var cache = new Dictionary<int, JsonData>();
        foreach (JsonData row in bro.FlattenRows())
        {
            if (FunctionHelpers.TryGetRowInt(row, "UniqueIndex", out int equipmentId))
                cache[equipmentId] = row;
        }

        _masterCaches[category] = cache;
        Console.WriteLine($"{WeaponGachaServerLogPrefix} Master cache built ({sw.ElapsedMilliseconds} ms), category={category}, entries={cache.Count}");
        return cache;
    }

    private static int GetProbabilityFileId(EquipmentGachaCategory category)
    {
        if (_probabilityFileIdCaches.TryGetValue(category, out int cachedFileId) && cachedFileId > 0)
            return cachedFileId;

        var config = GetConfig(category);
        var sw = Stopwatch.StartNew();
        var bro = Backend.Probability.GetProbabilityCardListV2();
        Console.WriteLine($"{WeaponGachaServerLogPrefix} Probability card list fetch complete ({sw.ElapsedMilliseconds} ms), category={category}");
        if (!bro.IsSuccess())
            throw new ValidationException($"Probability 카드 목록 조회 실패: {bro}");

        var rows = bro.FlattenRows();
        Console.WriteLine($"{WeaponGachaServerLogPrefix} Probability card list rows: {rows?.Count ?? 0}");
        if (rows != null)
        {
            for (int i = 0; i < rows.Count; i++)
            {
                var row = rows[i];
                string probabilityName = row.ContainsKey("probabilityName") ? row["probabilityName"].ToString() : string.Empty;
                Console.WriteLine($"{WeaponGachaServerLogPrefix} Probability card row[{i}] name={probabilityName}");
                if (!string.Equals(probabilityName, config.ProbabilityCardName, StringComparison.OrdinalIgnoreCase))
                    continue;

                int fileId = 0;
                if (row.ContainsKey("selectedProbabilityFileId") && int.TryParse(row["selectedProbabilityFileId"].ToString(), out fileId) && fileId > 0)
                {
                    _probabilityFileIdCaches[category] = fileId;
                    Console.WriteLine($"{WeaponGachaServerLogPrefix} Probability card cached: {config.ProbabilityCardName} -> {fileId}");
                    return fileId;
                }

                if (row.ContainsKey("selectedProbabilityFileID") && int.TryParse(row["selectedProbabilityFileID"].ToString(), out fileId) && fileId > 0)
                {
                    _probabilityFileIdCaches[category] = fileId;
                    Console.WriteLine($"{WeaponGachaServerLogPrefix} Probability card cached: {config.ProbabilityCardName} -> {fileId}");
                    return fileId;
                }
            }
        }

        throw new ValidationException($"Probability 카드 '{config.ProbabilityCardName}'를 찾을 수 없습니다. 콘솔 업로드 이름을 확인해 주세요.");
    }

    private static void WarmupEquipmentGachaCaches(EquipmentGachaCategory category)
    {
        var sw = Stopwatch.StartNew();
        LoadGachaPoolInfoCache(category);
        LoadGachaCostCache(category);
        LoadMasterCache(category);
        GetProbabilityFileId(category);
        Console.WriteLine($"{WeaponGachaServerLogPrefix} Warmup complete category={category} ({sw.ElapsedMilliseconds} ms)");
    }
}

}

타임 스탬프,메시지
2026-04-22T02:38:57.686Z,""“INIT_START Runtime Version: dotnet:8.v82\tRuntime Version ARN: arn:aws:lambda:ap-northeast-2::runtime:38354a629d4ce41ff17c430b50d54b27c345164ec5badcdec2f61c1a5db4faa1\n”""
2026-04-22T02:38:58.012Z,""“START RequestId: 22155246-a116-4f81-a967-c240dfc13b82 Version: $LATEST\n”""
2026-04-22T02:38:58.577Z,""“2026-04-22T02:38:58.457Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry\n”""
2026-04-22T02:38:58.816Z,""“2026-04-22T02:38:58.815Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\tbackend.dat load success\n”""
2026-04-22T02:38:58.816Z,""“2026-04-22T02:38:58.816Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Backend.Initialize complete (238 ms)\n”""
2026-04-22T02:38:58.816Z,""“2026-04-22T02:38:58.816Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[INFO] 함수 호출: ReqWeaponGachaCount\n”""
2026-04-22T02:38:58.816Z,""“2026-04-22T02:38:58.816Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry: ReqWeaponGachaCount\n”""
2026-04-22T02:39:00.276Z,""“2026-04-22T02:39:00.276Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\tbody : \n”""
2026-04-22T02:39:00.276Z,""“2026-04-22T02:39:00.276Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:01.795Z,""“2026-04-22T02:39:01.795Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\tbody : \n”""
2026-04-22T02:39:01.795Z,""“2026-04-22T02:39:01.795Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:03.075Z,""“2026-04-22T02:39:03.075Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[ChartIdManager] Initialize() 호출됨\n”""
2026-04-22T02:39:03.075Z,""“2026-04-22T02:39:03.075Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[ChartIdManager] GetChartList() 호출 중…\n”""
2026-04-22T02:39:03.115Z,""“2026-04-22T02:39:03.115Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\tbody : \n”""
2026-04-22T02:39:03.115Z,""“2026-04-22T02:39:03.115Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:03.228Z,""“2026-04-22T02:39:03.227Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[ChartIdManager] GetChartList() elapsed: 152 ms\n”""
2026-04-22T02:39:03.233Z,""“2026-04-22T02:39:03.233Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[ChartIdManager] GetChartList() 결과: True\n”""
2026-04-22T02:39:03.235Z,""“2026-04-22T02:39:03.235Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[ChartIdManager] 받은 행 개수: 22\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: GuideMission = 236080\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: StageClearReward = 229604\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: StageList = 229606\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: SkillGachaPoolInfo = 233031\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: SkillGachaCost = 233032\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: SkillGachaRate = 234781\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: SkillGachaPool = 234782\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: SkillMaster = 234780\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: SkillEnhanceUpList = 235027\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: SkillBreakthroughUpList = 235028\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: WeaponGachaPoolInfo = 235489\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: WeaponGachaCost = 235490\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: WeaponGachaPool = 235491\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: WeaponMaster = 235492\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: RingGachaPoolInfo = 235493\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: RingGachaCost = 235494\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: RingGachaPool = 235766\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: RingMaster = 235767\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: ArtifactGachaPoolInfo = 235499\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: ArtifactGachaCost = 235501\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: ArtifactGachaPool = 235764\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화] 차트 매핑: ArtifactMaster = 235765\n”""
2026-04-22T02:39:03.334Z,""“2026-04-22T02:39:03.334Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[초기화 완료] 차트 22개 매핑됨\n”""
2026-04-22T02:39:03.355Z,""“2026-04-22T02:39:03.355Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\tbody : \n”""
2026-04-22T02:39:03.355Z,""“2026-04-22T02:39:03.355Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:03.634Z,""“2026-04-22T02:39:03.634Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] Master chart fetch requested (559 ms so far), chart=WeaponMaster\n”""
2026-04-22T02:39:03.916Z,""“2026-04-22T02:39:03.916Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] Master cache built (722 ms), category=Weapon, entries=30\n”""
2026-04-22T02:39:03.976Z,""“2026-04-22T02:39:03.976Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\tbody : \n”""
2026-04-22T02:39:03.976Z,""“2026-04-22T02:39:03.976Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:04.062Z,""“2026-04-22T02:39:04.062Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] Master chart fetch requested (87 ms so far), chart=RingMaster\n”""
2026-04-22T02:39:04.296Z,""“2026-04-22T02:39:04.296Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] Master cache built (322 ms), category=Ring, entries=30\n”""
2026-04-22T02:39:04.435Z,""“2026-04-22T02:39:04.435Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\tbody : \n”""
2026-04-22T02:39:04.435Z,""“2026-04-22T02:39:04.435Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:04.534Z,""“2026-04-22T02:39:04.534Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] Master chart fetch requested (160 ms so far), chart=ArtifactMaster\n”""
2026-04-22T02:39:04.814Z,""“2026-04-22T02:39:04.814Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] Master cache built (440 ms), category=Artifact, entries=30\n”""
2026-04-22T02:39:04.935Z,""“2026-04-22T02:39:04.935Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\tbody : \n”""
2026-04-22T02:39:04.935Z,""“2026-04-22T02:39:04.935Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:04.981Z,""“2026-04-22T02:39:04.981Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 ReqWeaponGachaCount probability raw json: {”“elements”":[{"“EquipmentId”":{"“S”":"“302"”},"“Weight”":{"“S”":"“8"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“2.539683"”}},{"“EquipmentId”":{"“S”":"“203"”},"“Weight”":{"“S”":"“15"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“4.761905"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“304"”},"“Weight”":{"“S”":"“16"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“5.079365"”}},{"“EquipmentId”":{"“S”":"“305"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}},{"“EquipmentId”":{"“S”":"“205"”},"“Weight”":{"“S”":"“25"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“7.936508"”}},{"“EquipmentId”":{"“S”":"“205"”},"“Weight”":{"“S”":"“25"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“7.936508"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“302"”},"“Weight”":{"“S”":"“8"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“2.539683"”}}]}\n"""
2026-04-22T02:39:05.535Z,""“2026-04-22T02:39:05.535Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\tbody : {”“inDate”":"“2026-04-21T03:35:09.808Z”","“ownerInDate”":"“2026-04-21T03:35:09.134Z”","“params”":{"“EquipmentJson”":""{\"“Records\”":[{\"“EquipmentId\”":101,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":102,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":103,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":104,\"“Count\”":21,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":105,\"“Count\”":38,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":201,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":202,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":203,\"“Count\”":14,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":204,\"“Count\”":21,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":205,\"“Count\”":30,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":301,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":302,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":303,\"“Count\”":7,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":304,\"“Count\”":21,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":305,\"“Count\”":21,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":401,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":402,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":403,\"“Count\”":7,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":404,\"“Count\”":9,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":405,\"“Count\”":18,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":501,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":502,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":503,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":504,\"“Count\”":5,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":505,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":603,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":604,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":605,\"“Count\”":6,\"“EnhanceLevel\”":0}],\"“EquippedEquipmentId\”":0}"","“Gold”":265814},"“tableName”":"“user_info”"}\n"""
2026-04-22T02:39:05.535Z,""“2026-04-22T02:39:05.535Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:05.623Z,""“2026-04-22T02:39:05.623Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 PersistEquipmentGachaState UpdateV2 complete (248 ms)\n”""
2026-04-22T02:39:05.624Z,""“2026-04-22T02:39:05.624Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[무기가챠] ReqWeaponGachaCount total elapsed (6747 ms)\n”""
2026-04-22T02:39:05.696Z,""“2026-04-22T02:39:05.696Z\t22155246-a116-4f81-a967-c240dfc13b82\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function dispatch complete (7361 ms): ReqWeaponGachaCount\n”""
2026-04-22T02:39:05.854Z,""“END RequestId: 22155246-a116-4f81-a967-c240dfc13b82\n”""
2026-04-22T02:39:05.854Z,""“REPORT RequestId: 22155246-a116-4f81-a967-c240dfc13b82\tDuration: 7824.35 ms\tBilled Duration: 8148 ms\tMemory Size: 128 MB\tMax Memory Used: 96 MB\tInit Duration: 322.67 ms\t\n”""
2026-04-22T02:39:09.735Z,""“START RequestId: a4c446f8-0f06-4830-a766-03ed7b4a53fd Version: $LATEST\n”""
2026-04-22T02:39:09.736Z,""“2026-04-22T02:39:09.736Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry\n”""
2026-04-22T02:39:09.736Z,""“2026-04-22T02:39:09.736Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\tbackend.dat load success\n”""
2026-04-22T02:39:09.736Z,""“2026-04-22T02:39:09.736Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Backend.Initialize complete (0 ms)\n”""
2026-04-22T02:39:09.736Z,""“2026-04-22T02:39:09.736Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\t[INFO] 함수 호출: ReqWeaponGachaCount\n”""
2026-04-22T02:39:09.736Z,""“2026-04-22T02:39:09.736Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry: ReqWeaponGachaCount\n”""
2026-04-22T02:39:09.739Z,""“2026-04-22T02:39:09.739Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\tbody : \n”""
2026-04-22T02:39:09.739Z,""“2026-04-22T02:39:09.739Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:09.794Z,""“2026-04-22T02:39:09.794Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\tbody : \n”""
2026-04-22T02:39:09.794Z,""“2026-04-22T02:39:09.794Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:09.853Z,""“2026-04-22T02:39:09.852Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 ReqWeaponGachaCount probability raw json: {”“elements”":[{"“EquipmentId”":{"“S”":"“403"”},"“Weight”":{"“S”":"“9"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“2.857143"”}},{"“EquipmentId”":{"“S”":"“203"”},"“Weight”":{"“S”":"“15"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“4.761905"”}},{"“EquipmentId”":{"“S”":"“205"”},"“Weight”":{"“S”":"“25"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“7.936508"”}},{"“EquipmentId”":{"“S”":"“405"”},"“Weight”":{"“S”":"“15"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“4.761905"”}},{"“EquipmentId”":{"“S”":"“202"”},"“Weight”":{"“S”":"“10"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.174603"”}},{"“EquipmentId”":{"“S”":"“305"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}},{"“EquipmentId”":{"“S”":"“402"”},"“Weight”":{"“S”":"“6"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“1.904762"”}},{"“EquipmentId”":{"“S”":"“404"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“103"”},"“Weight”":{"“S”":"“18"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“5.714286"”}},{"“EquipmentId”":{"“S”":"“504"”},"“Weight”":{"“S”":"“8"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“2.539683"”}},{"“EquipmentId”":{"“S”":"“305"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}}]}\n"""
2026-04-22T02:39:09.875Z,""“2026-04-22T02:39:09.875Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\tbody : {”“inDate”":"“2026-04-21T03:35:09.808Z”","“ownerInDate”":"“2026-04-21T03:35:09.134Z”","“params”":{"“EquipmentJson”":""{\"“Records\”":[{\"“EquipmentId\”":101,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":102,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":103,\"“Count\”":11,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":104,\"“Count\”":21,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":105,\"“Count\”":38,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":201,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":202,\"“Count\”":11,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":203,\"“Count\”":15,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":204,\"“Count\”":21,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":205,\"“Count\”":31,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":301,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":302,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":303,\"“Count\”":7,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":304,\"“Count\”":21,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":305,\"“Count\”":23,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":401,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":402,\"“Count\”":5,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":403,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":404,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":405,\"“Count\”":19,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":501,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":502,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":503,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":504,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":505,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":603,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":604,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":605,\"“Count\”":6,\"“EnhanceLevel\”":0}],\"“EquippedEquipmentId\”":0}"","“Gold”":265814},"“tableName”":"“user_info”"}\n"""
2026-04-22T02:39:09.875Z,""“2026-04-22T02:39:09.875Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:09.920Z,""“2026-04-22T02:39:09.920Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 PersistEquipmentGachaState UpdateV2 complete (64 ms)\n”""
2026-04-22T02:39:09.920Z,""“2026-04-22T02:39:09.920Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\t[무기가챠] ReqWeaponGachaCount total elapsed (184 ms)\n”""
2026-04-22T02:39:09.953Z,""“2026-04-22T02:39:09.953Z\ta4c446f8-0f06-4830-a766-03ed7b4a53fd\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function dispatch complete (217 ms): ReqWeaponGachaCount\n”""
2026-04-22T02:39:09.995Z,""“END RequestId: a4c446f8-0f06-4830-a766-03ed7b4a53fd\n”""
2026-04-22T02:39:09.995Z,""“REPORT RequestId: a4c446f8-0f06-4830-a766-03ed7b4a53fd\tDuration: 258.94 ms\tBilled Duration: 259 ms\tMemory Size: 128 MB\tMax Memory Used: 96 MB\t\n”""
2026-04-22T02:39:12.690Z,""“START RequestId: fe4d14ac-7812-43ff-9e23-61fbdd3c116c Version: $LATEST\n”""
2026-04-22T02:39:12.690Z,""“2026-04-22T02:39:12.690Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry\n”""
2026-04-22T02:39:12.690Z,""“2026-04-22T02:39:12.690Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\tbackend.dat load success\n”""
2026-04-22T02:39:12.690Z,""“2026-04-22T02:39:12.690Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Backend.Initialize complete (0 ms)\n”""
2026-04-22T02:39:12.690Z,""“2026-04-22T02:39:12.690Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\t[INFO] 함수 호출: ReqWeaponGachaCount\n”""
2026-04-22T02:39:12.690Z,""“2026-04-22T02:39:12.690Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry: ReqWeaponGachaCount\n”""
2026-04-22T02:39:12.693Z,""“2026-04-22T02:39:12.693Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\tbody : \n”""
2026-04-22T02:39:12.693Z,""“2026-04-22T02:39:12.693Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:12.735Z,""“2026-04-22T02:39:12.735Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\tbody : \n”""
2026-04-22T02:39:12.735Z,""“2026-04-22T02:39:12.735Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:12.914Z,""“2026-04-22T02:39:12.914Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 ReqWeaponGachaCount probability raw json: {”“elements”":[{"“EquipmentId”":{"“S”":"“602"”},"“Weight”":{"“S”":"“2"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“0.634921"”}},{"“EquipmentId”":{"“S”":"“303"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“203"”},"“Weight”":{"“S”":"“15"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“4.761905"”}},{"“EquipmentId”":{"“S”":"“104"”},"“Weight”":{"“S”":"“24"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“7.619048"”}},{"“EquipmentId”":{"“S”":"“303"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“205"”},"“Weight”":{"“S”":"“25"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“7.936508"”}},{"“EquipmentId”":{"“S”":"“102"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“304"”},"“Weight”":{"“S”":"“16"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“5.079365"”}},{"“EquipmentId”":{"“S”":"“203"”},"“Weight”":{"“S”":"“15"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“4.761905"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“305"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}}]}\n"""
2026-04-22T02:39:13.095Z,""“2026-04-22T02:39:13.095Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\tbody : {”“inDate”":"“2026-04-21T03:35:09.808Z”","“ownerInDate”":"“2026-04-21T03:35:09.134Z”","“params”":{"“EquipmentJson”":""{\"“Records\”":[{\"“EquipmentId\”":101,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":102,\"“Count\”":9,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":103,\"“Count\”":11,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":104,\"“Count\”":22,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":105,\"“Count\”":39,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":201,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":202,\"“Count\”":11,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":203,\"“Count\”":17,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":204,\"“Count\”":21,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":205,\"“Count\”":32,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":301,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":302,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":303,\"“Count\”":9,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":304,\"“Count\”":22,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":305,\"“Count\”":24,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":401,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":402,\"“Count\”":5,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":403,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":404,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":405,\"“Count\”":19,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":501,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":502,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":503,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":504,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":505,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":602,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":603,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":604,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":605,\"“Count\”":6,\"“EnhanceLevel\”":0}],\"“EquippedEquipmentId\”":0}"","“Gold”":265814},"“tableName”":"“user_info”"}\n"""
2026-04-22T02:39:13.095Z,""“2026-04-22T02:39:13.095Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:13.132Z,""“2026-04-22T02:39:13.132Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 PersistEquipmentGachaState UpdateV2 complete (78 ms)\n”""
2026-04-22T02:39:13.132Z,""“2026-04-22T02:39:13.132Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\t[무기가챠] ReqWeaponGachaCount total elapsed (441 ms)\n”""
2026-04-22T02:39:13.196Z,""“2026-04-22T02:39:13.196Z\tfe4d14ac-7812-43ff-9e23-61fbdd3c116c\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function dispatch complete (505 ms): ReqWeaponGachaCount\n”""
2026-04-22T02:39:13.236Z,""“END RequestId: fe4d14ac-7812-43ff-9e23-61fbdd3c116c\n”""
2026-04-22T02:39:13.236Z,""“REPORT RequestId: fe4d14ac-7812-43ff-9e23-61fbdd3c116c\tDuration: 545.28 ms\tBilled Duration: 546 ms\tMemory Size: 128 MB\tMax Memory Used: 98 MB\t\n”""
2026-04-22T02:39:15.466Z,""“START RequestId: 52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb Version: $LATEST\n”""
2026-04-22T02:39:15.467Z,""“2026-04-22T02:39:15.467Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry\n”""
2026-04-22T02:39:15.467Z,""“2026-04-22T02:39:15.467Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\tbackend.dat load success\n”""
2026-04-22T02:39:15.467Z,""“2026-04-22T02:39:15.467Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Backend.Initialize complete (0 ms)\n”""
2026-04-22T02:39:15.467Z,""“2026-04-22T02:39:15.467Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\t[INFO] 함수 호출: ReqWeaponGachaCount\n”""
2026-04-22T02:39:15.467Z,""“2026-04-22T02:39:15.467Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry: ReqWeaponGachaCount\n”""
2026-04-22T02:39:15.470Z,""“2026-04-22T02:39:15.470Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\tbody : \n”""
2026-04-22T02:39:15.470Z,""“2026-04-22T02:39:15.470Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:15.511Z,""“2026-04-22T02:39:15.511Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\tbody : \n”""
2026-04-22T02:39:15.511Z,""“2026-04-22T02:39:15.511Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:15.597Z,""“2026-04-22T02:39:15.597Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 ReqWeaponGachaCount probability raw json: {”“elements”":[{"“EquipmentId”":{"“S”":"“605"”},"“Weight”":{"“S”":"“5"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“1.587302"”}},{"“EquipmentId”":{"“S”":"“505"”},"“Weight”":{"“S”":"“10"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.174603"”}},{"“EquipmentId”":{"“S”":"“405"”},"“Weight”":{"“S”":"“15"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“4.761905"”}},{"“EquipmentId”":{"“S”":"“205"”},"“Weight”":{"“S”":"“25"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“7.936508"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“203"”},"“Weight”":{"“S”":"“15"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“4.761905"”}},{"“EquipmentId”":{"“S”":"“102"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“204"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}},{"“EquipmentId”":{"“S”":"“102"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“102"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“104"”},"“Weight”":{"“S”":"“24"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“7.619048"”}}]}\n"""
2026-04-22T02:39:15.635Z,""“2026-04-22T02:39:15.635Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\tbody : {”“inDate”":"“2026-04-21T03:35:09.808Z”","“ownerInDate”":"“2026-04-21T03:35:09.134Z”","“params”":{"“EquipmentJson”":""{\"“Records\”":[{\"“EquipmentId\”":101,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":102,\"“Count\”":12,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":103,\"“Count\”":11,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":104,\"“Count\”":23,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":105,\"“Count\”":40,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":201,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":202,\"“Count\”":11,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":203,\"“Count\”":18,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":204,\"“Count\”":22,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":205,\"“Count\”":33,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":301,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":302,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":303,\"“Count\”":9,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":304,\"“Count\”":22,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":305,\"“Count\”":24,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":401,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":402,\"“Count\”":5,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":403,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":404,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":405,\"“Count\”":20,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":501,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":502,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":503,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":504,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":505,\"“Count\”":7,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":602,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":603,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":604,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":605,\"“Count\”":7,\"“EnhanceLevel\”":0}],\"“EquippedEquipmentId\”":0}"","“Gold”":265814},"“tableName”":"“user_info”"}\n"""
2026-04-22T02:39:15.635Z,""“2026-04-22T02:39:15.635Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:15.693Z,""“2026-04-22T02:39:15.693Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 PersistEquipmentGachaState UpdateV2 complete (93 ms)\n”""
2026-04-22T02:39:15.694Z,""“2026-04-22T02:39:15.694Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\t[무기가챠] ReqWeaponGachaCount total elapsed (226 ms)\n”""
2026-04-22T02:39:15.694Z,""“2026-04-22T02:39:15.694Z\t52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function dispatch complete (226 ms): ReqWeaponGachaCount\n”""
2026-04-22T02:39:15.735Z,""“END RequestId: 52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\n”""
2026-04-22T02:39:15.735Z,""“REPORT RequestId: 52ac85f8-f2c0-4caa-99c7-f5cdd923a2fb\tDuration: 267.61 ms\tBilled Duration: 268 ms\tMemory Size: 128 MB\tMax Memory Used: 98 MB\t\n”""
2026-04-22T02:39:17.370Z,""“START RequestId: b6fa9050-38ac-46cb-b312-7c5faa150bb5 Version: $LATEST\n”""
2026-04-22T02:39:17.370Z,""“2026-04-22T02:39:17.370Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry\n”""
2026-04-22T02:39:17.371Z,""“2026-04-22T02:39:17.371Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\tbackend.dat load success\n”""
2026-04-22T02:39:17.371Z,""“2026-04-22T02:39:17.371Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Backend.Initialize complete (0 ms)\n”""
2026-04-22T02:39:17.371Z,""“2026-04-22T02:39:17.371Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\t[INFO] 함수 호출: ReqWeaponGachaCount\n”""
2026-04-22T02:39:17.371Z,""“2026-04-22T02:39:17.371Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry: ReqWeaponGachaCount\n”""
2026-04-22T02:39:17.375Z,""“2026-04-22T02:39:17.375Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\tbody : \n”""
2026-04-22T02:39:17.375Z,""“2026-04-22T02:39:17.375Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:17.474Z,""“2026-04-22T02:39:17.474Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\tbody : \n”""
2026-04-22T02:39:17.474Z,""“2026-04-22T02:39:17.474Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:17.534Z,""“2026-04-22T02:39:17.534Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 ReqWeaponGachaCount probability raw json: {”“elements”":[{"“EquipmentId”":{"“S”":"“401"”},"“Weight”":{"“S”":"“3"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“0.952381"”}},{"“EquipmentId”":{"“S”":"“103"”},"“Weight”":{"“S”":"“18"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“5.714286"”}},{"“EquipmentId”":{"“S”":"“304"”},"“Weight”":{"“S”":"“16"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“5.079365"”}},{"“EquipmentId”":{"“S”":"“101"”},"“Weight”":{"“S”":"“6"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“1.904762"”}},{"“EquipmentId”":{"“S”":"“204"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}},{"“EquipmentId”":{"“S”":"“102"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“404"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“303"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“601"”},"“Weight”":{"“S”":"“1"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“0.317457"”}},{"“EquipmentId”":{"“S”":"“305"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}}]}\n"""
2026-04-22T02:39:17.737Z,""“2026-04-22T02:39:17.737Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\tbody : {”“inDate”":"“2026-04-21T03:35:09.808Z”","“ownerInDate”":"“2026-04-21T03:35:09.134Z”","“params”":{"“EquipmentJson”":""{\"“Records\”":[{\"“EquipmentId\”":101,\"“Count\”":9,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":102,\"“Count\”":13,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":103,\"“Count\”":12,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":104,\"“Count\”":23,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":105,\"“Count\”":41,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":201,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":202,\"“Count\”":11,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":203,\"“Count\”":18,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":204,\"“Count\”":23,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":205,\"“Count\”":33,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":301,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":302,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":303,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":304,\"“Count\”":23,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":305,\"“Count\”":25,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":401,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":402,\"“Count\”":5,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":403,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":404,\"“Count\”":11,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":405,\"“Count\”":20,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":501,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":502,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":503,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":504,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":505,\"“Count\”":7,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":601,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":602,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":603,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":604,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":605,\"“Count\”":7,\"“EnhanceLevel\”":0}],\"“EquippedEquipmentId\”":0}"","“Gold”":265814},"“tableName”":"“user_info”"}\n"""
2026-04-22T02:39:17.737Z,""“2026-04-22T02:39:17.737Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:17.974Z,""“2026-04-22T02:39:17.973Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 PersistEquipmentGachaState UpdateV2 complete (436 ms)\n”""
2026-04-22T02:39:17.974Z,""“2026-04-22T02:39:17.974Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\t[무기가챠] ReqWeaponGachaCount total elapsed (602 ms)\n”""
2026-04-22T02:39:18.014Z,""“2026-04-22T02:39:18.014Z\tb6fa9050-38ac-46cb-b312-7c5faa150bb5\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function dispatch complete (643 ms): ReqWeaponGachaCount\n”""
2026-04-22T02:39:18.136Z,""“END RequestId: b6fa9050-38ac-46cb-b312-7c5faa150bb5\n”""
2026-04-22T02:39:18.136Z,""“REPORT RequestId: b6fa9050-38ac-46cb-b312-7c5faa150bb5\tDuration: 765.33 ms\tBilled Duration: 766 ms\tMemory Size: 128 MB\tMax Memory Used: 99 MB\t\n”""
2026-04-22T02:39:20.958Z,""“START RequestId: 6ae88634-9b80-4881-9be1-0d6de877f3c7 Version: $LATEST\n”""
2026-04-22T02:39:20.959Z,""“2026-04-22T02:39:20.959Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry\n”""
2026-04-22T02:39:20.959Z,""“2026-04-22T02:39:20.959Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\tbackend.dat load success\n”""
2026-04-22T02:39:20.959Z,""“2026-04-22T02:39:20.959Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Backend.Initialize complete (0 ms)\n”""
2026-04-22T02:39:20.959Z,""“2026-04-22T02:39:20.959Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\t[INFO] 함수 호출: ReqWeaponGachaCount\n”""
2026-04-22T02:39:20.959Z,""“2026-04-22T02:39:20.959Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry: ReqWeaponGachaCount\n”""
2026-04-22T02:39:20.962Z,""“2026-04-22T02:39:20.962Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\tbody : \n”""
2026-04-22T02:39:20.962Z,""“2026-04-22T02:39:20.962Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:21.195Z,""“2026-04-22T02:39:21.195Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\tbody : \n”""
2026-04-22T02:39:21.195Z,""“2026-04-22T02:39:21.195Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:21.294Z,""“2026-04-22T02:39:21.294Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 ReqWeaponGachaCount probability raw json: {”“elements”":[{"“EquipmentId”":{"“S”":"“202"”},"“Weight”":{"“S”":"“10"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.174603"”}},{"“EquipmentId”":{"“S”":"“204"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}},{"“EquipmentId”":{"“S”":"“404"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“101"”},"“Weight”":{"“S”":"“6"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“1.904762"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“205"”},"“Weight”":{"“S”":"“25"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“7.936508"”}},{"“EquipmentId”":{"“S”":"“201"”},"“Weight”":{"“S”":"“5"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“1.587302"”}},{"“EquipmentId”":{"“S”":"“204"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}},{"“EquipmentId”":{"“S”":"“304"”},"“Weight”":{"“S”":"“16"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“5.079365"”}},{"“EquipmentId”":{"“S”":"“505"”},"“Weight”":{"“S”":"“10"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.174603"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}}]}\n"""
2026-04-22T02:39:21.394Z,""“2026-04-22T02:39:21.394Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\tbody : {”“inDate”":"“2026-04-21T03:35:09.808Z”","“ownerInDate”":"“2026-04-21T03:35:09.134Z”","“params”":{"“EquipmentJson”":""{\"“Records\”":[{\"“EquipmentId\”":101,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":102,\"“Count\”":13,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":103,\"“Count\”":12,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":104,\"“Count\”":23,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":105,\"“Count\”":43,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":201,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":202,\"“Count\”":12,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":203,\"“Count\”":18,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":204,\"“Count\”":25,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":205,\"“Count\”":34,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":301,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":302,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":303,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":304,\"“Count\”":24,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":305,\"“Count\”":25,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":401,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":402,\"“Count\”":5,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":403,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":404,\"“Count\”":12,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":405,\"“Count\”":20,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":501,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":502,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":503,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":504,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":505,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":601,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":602,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":603,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":604,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":605,\"“Count\”":7,\"“EnhanceLevel\”":0}],\"“EquippedEquipmentId\”":0}"","“Gold”":265814},"“tableName”":"“user_info”"}\n"""
2026-04-22T02:39:21.394Z,""“2026-04-22T02:39:21.394Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:21.494Z,""“2026-04-22T02:39:21.494Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 PersistEquipmentGachaState UpdateV2 complete (197 ms)\n”""
2026-04-22T02:39:21.494Z,""“2026-04-22T02:39:21.494Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\t[무기가챠] ReqWeaponGachaCount total elapsed (534 ms)\n”""
2026-04-22T02:39:21.494Z,""“2026-04-22T02:39:21.494Z\t6ae88634-9b80-4881-9be1-0d6de877f3c7\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function dispatch complete (535 ms): ReqWeaponGachaCount\n”""
2026-04-22T02:39:21.535Z,""“END RequestId: 6ae88634-9b80-4881-9be1-0d6de877f3c7\n”""
2026-04-22T02:39:21.535Z,""“REPORT RequestId: 6ae88634-9b80-4881-9be1-0d6de877f3c7\tDuration: 575.69 ms\tBilled Duration: 576 ms\tMemory Size: 128 MB\tMax Memory Used: 99 MB\t\n”""
2026-04-22T02:39:25.489Z,""“START RequestId: 63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7 Version: $LATEST\n”""
2026-04-22T02:39:25.490Z,""“2026-04-22T02:39:25.490Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry\n”""
2026-04-22T02:39:25.491Z,""“2026-04-22T02:39:25.491Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\tbackend.dat load success\n”""
2026-04-22T02:39:25.491Z,""“2026-04-22T02:39:25.491Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Backend.Initialize complete (0 ms)\n”""
2026-04-22T02:39:25.491Z,""“2026-04-22T02:39:25.491Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\t[INFO] 함수 호출: ReqWeaponGachaCount\n”""
2026-04-22T02:39:25.491Z,""“2026-04-22T02:39:25.491Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry: ReqWeaponGachaCount\n”""
2026-04-22T02:39:25.493Z,""“2026-04-22T02:39:25.493Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\tbody : \n”""
2026-04-22T02:39:25.493Z,""“2026-04-22T02:39:25.493Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:25.533Z,""“2026-04-22T02:39:25.533Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\tbody : \n”""
2026-04-22T02:39:25.533Z,""“2026-04-22T02:39:25.533Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:25.894Z,""“2026-04-22T02:39:25.894Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 ReqWeaponGachaCount probability raw json: {”“elements”":[{"“EquipmentId”":{"“S”":"“102"”},"“Weight”":{"“S”":"“12"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“3.809524"”}},{"“EquipmentId”":{"“S”":"“405"”},"“Weight”":{"“S”":"“15"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“4.761905"”}},{"“EquipmentId”":{"“S”":"“104"”},"“Weight”":{"“S”":"“24"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“7.619048"”}},{"“EquipmentId”":{"“S”":"“201"”},"“Weight”":{"“S”":"“5"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“1.587302"”}},{"“EquipmentId”":{"“S”":"“103"”},"“Weight”":{"“S”":"“18"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“5.714286"”}},{"“EquipmentId”":{"“S”":"“305"”},"“Weight”":{"“S”":"“20"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“6.349206"”}},{"“EquipmentId”":{"“S”":"“503"”},"“Weight”":{"“S”":"“6"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“1.904762"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“105"”},"“Weight”":{"“S”":"“30"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“9.523810"”}},{"“EquipmentId”":{"“S”":"“604"”},"“Weight”":{"“S”":"“4"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“1.269841"”}},{"“EquipmentId”":{"“S”":"“203"”},"“Weight”":{"“S”":"“15"”},"“IsPickup”":{"“S”":"“0"”},"“percent”":{"“S”":"“4.761905"”}}]}\n"""
2026-04-22T02:39:26.014Z,""“2026-04-22T02:39:26.014Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\tbody : {”“inDate”":"“2026-04-21T03:35:09.808Z”","“ownerInDate”":"“2026-04-21T03:35:09.134Z”","“params”":{"“EquipmentJson”":""{\"“Records\”":[{\"“EquipmentId\”":101,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":102,\"“Count\”":14,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":103,\"“Count\”":13,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":104,\"“Count\”":24,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":105,\"“Count\”":45,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":201,\"“Count\”":5,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":202,\"“Count\”":12,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":203,\"“Count\”":19,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":204,\"“Count\”":25,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":205,\"“Count\”":34,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":301,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":302,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":303,\"“Count\”":10,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":304,\"“Count\”":24,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":305,\"“Count\”":26,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":401,\"“Count\”":3,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":402,\"“Count\”":5,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":403,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":404,\"“Count\”":12,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":405,\"“Count\”":21,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":501,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":502,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":503,\"“Count\”":4,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":504,\"“Count\”":6,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":505,\"“Count\”":8,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":601,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":602,\"“Count\”":1,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":603,\"“Count\”":2,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":604,\"“Count\”":5,\"“EnhanceLevel\”":0},{\"“EquipmentId\”":605,\"“Count\”":7,\"“EnhanceLevel\”":0}],\"“EquippedEquipmentId\”":0}"","“Gold”":265814},"“tableName”":"“user_info”"}\n"""
2026-04-22T02:39:26.014Z,""“2026-04-22T02:39:26.014Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:26.055Z,""“2026-04-22T02:39:26.055Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\t[SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 PersistEquipmentGachaState UpdateV2 complete (138 ms)\n”""
2026-04-22T02:39:26.055Z,""“2026-04-22T02:39:26.055Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\t[무기가챠] ReqWeaponGachaCount total elapsed (564 ms)\n”""
2026-04-22T02:39:26.055Z,""“2026-04-22T02:39:26.055Z\t63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function dispatch complete (564 ms): ReqWeaponGachaCount\n”""
2026-04-22T02:39:26.095Z,""“END RequestId: 63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\n”""
2026-04-22T02:39:26.095Z,""“REPORT RequestId: 63ce5ab8-86d1-4b03-b5ec-35fc58e0ddc7\tDuration: 604.69 ms\tBilled Duration: 605 ms\tMemory Size: 128 MB\tMax Memory Used: 99 MB\t\n”""
2026-04-22T02:39:31.589Z,""“START RequestId: e0f2973f-cce0-4482-a09a-8c8a11d116ff Version: $LATEST\n”""
2026-04-22T02:39:31.594Z,""“2026-04-22T02:39:31.594Z\te0f2973f-cce0-4482-a09a-8c8a11d116ff\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry\n”""
2026-04-22T02:39:31.594Z,""“2026-04-22T02:39:31.594Z\te0f2973f-cce0-4482-a09a-8c8a11d116ff\tinfo\tbackend.dat load success\n”""
2026-04-22T02:39:31.594Z,""“2026-04-22T02:39:31.594Z\te0f2973f-cce0-4482-a09a-8c8a11d116ff\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Backend.Initialize complete (0 ms)\n”""
2026-04-22T02:39:31.594Z,""“2026-04-22T02:39:31.594Z\te0f2973f-cce0-4482-a09a-8c8a11d116ff\tinfo\t[INFO] 함수 호출: ReqWeaponGachaCount\n”""
2026-04-22T02:39:31.594Z,""“2026-04-22T02:39:31.594Z\te0f2973f-cce0-4482-a09a-8c8a11d116ff\tinfo\t[WGACHA-SERVER] BootId=2-3531899f1b3d4ef3a04677c080d51e43 Function entry: ReqWeaponGachaCount\n”""
2026-04-22T02:39:31.596Z,""“2026-04-22T02:39:31.596Z\te0f2973f-cce0-4482-a09a-8c8a11d116ff\tinfo\tbody : \n”""
2026-04-22T02:39:31.596Z,""“2026-04-22T02:39:31.596Z\te0f2973f-cce0-4482-a09a-8c8a11d116ff\tinfo\taccessToken : 7b33ac59d6a76054cab033dd17a500dc78106786864c57bd9773c773aa9f74a5\n”""
2026-04-22T02:39:31.656Z,""“2026-04-22T02:39:31.656Z\te0f2973f-cce0-4482-a09a-8c8a11d116ff\tinfo\tbody : \n”""

안녕하세요 개발자님,
남겨주신 문의 정보를 확인 시 콜드스타트로 인해 첫 호출이 다소 긴 시간이 소요되는 상황으로 확인됩니다.
뒤끝펑션이 서버로 배포되면 바로 활성화되는 것이 아니라 해당 함수가 호출되었을 때 활성화되게 됩니다.
비활성화되어있는 함수를 호출한 경우 함수를 활성화한 후 실행하기 때문에 응답시간이 약 5000ms 이상의 시간이 소요될 수 있습니다.

  • 해당 함수가 서버로 배포된 후 제일 처음 호출된 경우
  • 해당 함수가 장시간(약 4~7분) 사용되지 않다가 호출된 경우
  • 해당 함수가 새로 배포된 후 제일 처음 호출된 경우

펑션 함수의 마지막 호출 이후 4~7분 사이에, 누군가가 추가 호출하지 않으면 펑션이 잠시 다운되며,
이후 다시 실행시킬 때에는 콜드 스타트로 인해 다시 긴 시간이 소요될 수 있습니다.

현재로서는 콜드 스타트를 완전히 없애는 설정은 제공되지 않기에,
가챠 화면 진입 시 결과와 무관한 펑션 호출을 한 번 먼저 보내 활성화 상태를 유지해두는 워밍업 호출로 우회하시는 방법을 권장드립니다.

관련 안내가 있는 개발자 문서도 참고 바랍니다.

좋아요 1

안녕하세요 뒤끝팀 관리자님 답변 감사드립니다.
설명해주신 콜드 스타트 이슈는 이해했습니다.

다만 제가 이번 문의에서 확인하고 싶었던 핵심은 첫 호출 5초 내외의 콜드 스타트 보다는, 함수가 이미 활성화된 이후에도 UpdateV2 저장 구간이 약 200~300ms 정도 소요되는 부분입니다.

실제 테스트에서는:

  • 같은 함수가 이미 한 번 호출된 뒤
  • 콜드 스타트 구간이 지난 상태에서도
  • Backend.GameData.UpdateV2(…) 실행 시점에만 별도로 약 200~300ms 정도가 측정되었습니다.
  • 그래서 가챠를 돌릴 때 300~800ms가량 시간이 소모되었습니다.

즉 제가 궁금한 부분은 아래입니다.

  1. UpdateV2 호출 자체에 평균적으로 이 정도의 지연이 발생하는 것이 정상 범위인지
  2. 저장 대상 row 크기나 payload 크기에 따라 UpdateV2 지연이 유의미하게 증가하는 구조인지
  3. UpdateV2 호출 시간을 줄이기 위해 권장되는 DB 설계 방식이나 호출 패턴이 있는지

정리하면,
콜드 스타트로 인한 첫 호출 지연이 아니라, 웜 상태에서도 UpdateV2 저장 구간이 200~300ms 정도 걸리는 현상이 정상인지를 확인하고 싶었습니다.

확인 부탁드립니다.

웜 스타트 상태(함수 활성화 상태)에서의 평균 응답시간은 300ms 이하로,
측정하신 200~300ms 수준은 정상 범위 내에 해당합니다.

로그를 보면 현재 가챠 펑션 내에서 아래와 같이 여러 뒤끝 함수를 순차 호출하고 있습니다.

개발자 문서에 안내된 바와 같이 펑션 내에서 3개 이상의 뒤끝 함수를 호출하는 경우 각 호출의 응답을 순차적으로 기다려야 하기 때문에 전체 응답시간이 늘어날 수 있습니다. 300~800ms의 편차는 이러한 복수 호출 구조에서 비롯된 것으로 예상됩니다.

좋아요 1