게시 함수의 런타임과 한도
Ontology Manager의 Functions 탭에서 이름, 설명, API 이름이나 RID로 게시 함수를 찾습니다. 개요에는 입력과 출력, 사용 이력과 성공/실패 및 P95 지표가 표시됩니다.
버전별 구성
지원하는 함수에는 Configuration 탭이 나타나며 시간 제한이나 메모리를 설정할 수 있습니다. 이 탭이 없으면 해당 함수에 구성할 옵션이 없습니다.
재정의는 함수 버전별로 적용됩니다. 게시 앱과 템플릿에 따라 새 버전이 기본 설정을 받을 수 있으므로 상속 조건을 확인해야 합니다.
지원 템플릿은 새 안정 버전을 게시할 때 의미적 버전 순서의 앞선 안정 버전에서 재정의를 상속합니다. 비안정 버전은 안정 여부와 관계없이 앞선 버전의 구성을 상속합니다. 숨김 설정 파일 templateConfiguration.json의 parentTemplateVersion은 TSv1에서 3.512.0 이상, Python에서 0.423.0 이상이어야 이 상속을 사용할 수 있습니다.
일관된 스냅샷
함수 기반 액션의 읽기는 액션 실행 모드의 일관성 계약을 따릅니다. 신규 Batched writes의 기본 Snapshot과 Legacy 모드의 차이는 액션 일관성을 확인합니다. 모든 종류의 함수 읽기가 무조건 하나의 시점에 고정되는 것으로 일반화하지 않아야 합니다.
함수의 스냅샷 옵션은 다음과 같습니다.
| 옵션 | 용도 |
|---|---|
| Default | 권장 설정입니다. 스냅샷 관련 문제가 없으면 유지합니다. |
| Disable snapshots | 실행 중 질의마다 최신 데이터가 필요하거나 장시간 작업의 스냅샷 오류를 해결할 때 사용합니다. |
| Enable snapshots | 모든 읽기를 한 시점으로 고정하고 읽기 성능을 얻으려는 고급 구성입니다. 실행 중 데이터가 갱신되지 않아도 되어야 하며 일반적으로 강제 활성화는 권장하지 않습니다. |
소스가 연결된 함수는 기본으로 스냅샷 없이 실시간 데이터를 읽습니다. 쓰기나 외부 호출을 할 수 있으므로 스냅샷 강제는 권장하지 않습니다.
실행시간
| 범위 | 한도 |
|---|---|
| 일반 함수의 경과시간 | 기본 60초. 지원하는 함수의 Configuration에서 변경 가능 |
| Live Preview | 최대 280초. 게시 버전의 시간 설정을 바꿔도 이 한도를 따름 |
| Automate 실행 | 비동기로 최대 4시간 |
| TSv1 CPU 시간 | 30초. 변경할 수 없음 |
CPU 시간과 외부 응답을 기다리는 시간을 포함한 경과시간은 다릅니다.
메모리와 병렬 처리
| 실행 환경 | 메모리 |
|---|---|
| TSv1 | 128MB |
| 전용 배포 Python | 기본 2GB. 함수 Configuration에서는 변경할 수 없으며, 공유 자원은 전용 배포 설정에서 조정 |
| 서버리스 Python 및 TSv2 | 기본 1024MiB, 512MiB부터 5120MiB까지 구성 가능 |
TSv1 계산은 단일 스레드이지만 객체 집합과 링크 로드는 병렬로 요청할 수 있습니다. TSv2는 Node.js worker_threads, Python은 threading으로 멀티스레딩을 사용할 수 있습니다.
TSv1 객체 로드
.all()과 .allAsync()는 한 번에 100,000개를 넘는 객체를 로드하거나 Search Around를 세 번보다 많이 사용하면 오류가 발생합니다. 수만 객체만으로도 시간이나 메모리 한도에 먼저 도달할 수 있습니다.
필요한 경우 집계로 요약값만 가져오거나 정렬 후 일부만 로드해야 합니다. 집계 버킷에도 별도 한도가 있으며 온톨로지 질의 한도와 집계 정확도를 구분해 확인합니다.