fix: reduce ClickHouse CPU by increasing flush interval, rename LIVE→AUTO labels
All checks were successful
CI / cleanup-branch (push) Has been skipped
CI / build (push) Successful in 1m7s
CI / docker (push) Successful in 1m24s
CI / deploy-feature (push) Has been skipped
CI / deploy (push) Successful in 41s

- Increase ingestion flush interval from 500ms to 5000ms to reduce MV merge storms
- Reduce ClickHouse background_schedule_pool_size from 8 to 4
- Rename LIVE/PAUSED badge labels to AUTO/MANUAL across all pages
- Update design system to v0.1.29

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-04-03 22:05:29 +02:00
parent e1cb9d7872
commit ac94a67a49
10 changed files with 15 additions and 15 deletions

View File

@@ -35,7 +35,7 @@ agent-registry:
ingestion: ingestion:
buffer-capacity: 50000 buffer-capacity: 50000
batch-size: 5000 batch-size: 5000
flush-interval-ms: 500 flush-interval-ms: 5000
cameleer: cameleer:
body-size-limit: ${CAMELEER_BODY_SIZE_LIMIT:16384} body-size-limit: ${CAMELEER_BODY_SIZE_LIMIT:16384}

View File

@@ -153,7 +153,7 @@ data:
<background_move_pool_size>1</background_move_pool_size> <background_move_pool_size>1</background_move_pool_size>
<background_fetches_pool_size>1</background_fetches_pool_size> <background_fetches_pool_size>1</background_fetches_pool_size>
<background_common_pool_size>2</background_common_pool_size> <background_common_pool_size>2</background_common_pool_size>
<background_schedule_pool_size>8</background_schedule_pool_size> <background_schedule_pool_size>4</background_schedule_pool_size>
<background_message_broker_schedule_pool_size>1</background_message_broker_schedule_pool_size> <background_message_broker_schedule_pool_size>1</background_message_broker_schedule_pool_size>
<background_distributed_schedule_pool_size>1</background_distributed_schedule_pool_size> <background_distributed_schedule_pool_size>1</background_distributed_schedule_pool_size>
<tables_loader_foreground_pool_size>0</tables_loader_foreground_pool_size> <tables_loader_foreground_pool_size>0</tables_loader_foreground_pool_size>

8
ui/package-lock.json generated
View File

@@ -8,7 +8,7 @@
"name": "ui", "name": "ui",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@cameleer/design-system": "^0.1.28", "@cameleer/design-system": "^0.1.29",
"@tanstack/react-query": "^5.90.21", "@tanstack/react-query": "^5.90.21",
"lucide-react": "^1.7.0", "lucide-react": "^1.7.0",
"openapi-fetch": "^0.17.0", "openapi-fetch": "^0.17.0",
@@ -278,9 +278,9 @@
} }
}, },
"node_modules/@cameleer/design-system": { "node_modules/@cameleer/design-system": {
"version": "0.1.28", "version": "0.1.29",
"resolved": "https://gitea.siegeln.net/api/packages/cameleer/npm/%40cameleer%2Fdesign-system/-/0.1.28/design-system-0.1.28.tgz", "resolved": "https://gitea.siegeln.net/api/packages/cameleer/npm/%40cameleer%2Fdesign-system/-/0.1.29/design-system-0.1.29.tgz",
"integrity": "sha512-pDzuiIW2zpkYeX9mR1ENxO2Xk+GTMNUQzxsC7C+p0veEnOC1XObHse9Q06GKJQ9+mff0eFCk9cuYCwW3kwB0rA==", "integrity": "sha512-Za4drshZhGqonR0QyZxDpo6UnhT+VaOCSRLIlmjRrVZD/8+E+wvjbCVO2/sX5EMCfho+x6Y6V7d4GHNwu38ioQ==",
"dependencies": { "dependencies": {
"lucide-react": "^1.7.0", "lucide-react": "^1.7.0",
"react": "^19.0.0", "react": "^19.0.0",

View File

@@ -14,7 +14,7 @@
"generate-api:live": "curl -s http://localhost:8081/api/v1/api-docs -o src/api/openapi.json && openapi-typescript src/api/openapi.json -o src/api/schema.d.ts" "generate-api:live": "curl -s http://localhost:8081/api/v1/api-docs -o src/api/openapi.json && openapi-typescript src/api/openapi.json -o src/api/schema.d.ts"
}, },
"dependencies": { "dependencies": {
"@cameleer/design-system": "^0.1.28", "@cameleer/design-system": "^0.1.29",
"@tanstack/react-query": "^5.90.21", "@tanstack/react-query": "^5.90.21",
"lucide-react": "^1.7.0", "lucide-react": "^1.7.0",
"openapi-fetch": "^0.17.0", "openapi-fetch": "^0.17.0",

View File

@@ -10,9 +10,9 @@ export function useRefreshInterval(intervalMs: number): number | false {
} }
/** /**
* Returns `enabled` and `refetchInterval` tied to the LIVE/PAUSED toggle. * Returns `enabled` and `refetchInterval` tied to the AUTO/MANUAL toggle.
* - LIVE: enabled=true, refetchInterval=intervalMs (fetch + poll) * - AUTO: enabled=true, refetchInterval=intervalMs (fetch + poll)
* - PAUSED: enabled=true, refetchInterval=false (fetch once, no polling) * - MANUAL: enabled=true, refetchInterval=false (fetch once, no polling)
*/ */
export function useLiveQuery(intervalMs: number) { export function useLiveQuery(intervalMs: number) {
const { autoRefresh } = useGlobalFilters(); const { autoRefresh } = useGlobalFilters();

View File

@@ -124,7 +124,7 @@ export default function AuditLogPage() {
<span className={styles.tableMeta}> <span className={styles.tableMeta}>
{totalCount} events {totalCount} events
</span> </span>
<Badge label="LIVE" color="success" /> <Badge label="AUTO" color="success" />
</div> </div>
</div> </div>
<DataTable <DataTable

View File

@@ -265,7 +265,7 @@ export default function Dashboard({ onExchangeSelect, activeExchangeId }: Dashbo
<span className={styles.tableMeta}> <span className={styles.tableMeta}>
{rows.length.toLocaleString()} of {(searchResult?.total ?? 0).toLocaleString()} exchanges {rows.length.toLocaleString()} of {(searchResult?.total ?? 0).toLocaleString()} exchanges
</span> </span>
{!textFilter && <Badge label="LIVE" color="success" />} {!textFilter && <Badge label="AUTO" color="success" />}
</div> </div>
</div> </div>

View File

@@ -378,7 +378,7 @@ export default function DashboardL2() {
<span className={styles.tableTitle}>Route Performance</span> <span className={styles.tableTitle}>Route Performance</span>
<div className={styles.tableRight}> <div className={styles.tableRight}>
<span className={styles.tableMeta}>{routeRows.length} routes</span> <span className={styles.tableMeta}>{routeRows.length} routes</span>
<Badge label="LIVE" color="success" /> <Badge label="AUTO" color="success" />
</div> </div>
</div> </div>
<DataTable <DataTable

View File

@@ -718,7 +718,7 @@ export default function RouteDetail() {
<span className={styles.tableTitle}>Processor Performance</span> <span className={styles.tableTitle}>Processor Performance</span>
<div className={styles.tableRight}> <div className={styles.tableRight}>
<span className={styles.tableMeta}>{processorRows.length} processors</span> <span className={styles.tableMeta}>{processorRows.length} processors</span>
<Badge label="LIVE" color="success" /> <Badge label="AUTO" color="success" />
</div> </div>
</div> </div>
<DataTable <DataTable

View File

@@ -295,7 +295,7 @@ export default function RoutesMetrics() {
<span className={styles.tableTitle}>Per-Route Performance</span> <span className={styles.tableTitle}>Per-Route Performance</span>
<div className={styles.tableRight}> <div className={styles.tableRight}>
<span className={styles.tableMeta}>{rows.length} routes</span> <span className={styles.tableMeta}>{rows.length} routes</span>
<Badge label="LIVE" color="success" /> <Badge label="AUTO" color="success" />
</div> </div>
</div> </div>
<DataTable <DataTable