{"record":{"id":"f71d3936e8fff1e3","repo":"SigNoz/signoz","slug":"resource-bytes-limit-exceeded-try-applying-filter","errorCode":null,"errorMessage":"resource bytes limit exceeded, try applying filters such as service.name, etc. to reduce the data size","messagePattern":"resource bytes limit exceeded, try applying filters such as service\\.name, etc\\. to reduce the data size","errorType":"error_code","errorClass":"ResourceLimitError","httpStatus":400,"severity":"error","filePath":"pkg/query-service/errors/clickhouse.go","lineNumber":7,"sourceCode":"package errors\n\nimport \"errors\"\n\nvar (\n\t// ErrResourceBytesLimitExceeded is returned when the resource bytes limit is exceeded\n\tErrResourceBytesLimitExceeded = NewResourceLimitError(errors.New(\"resource bytes limit exceeded, try applying filters such as service.name, etc. to reduce the data size\"))\n\t// ErrResourceTimeLimitExceeded is returned when the resource time limit is exceeded\n\tErrResourceTimeLimitExceeded = NewResourceLimitError(errors.New(\"resource time limit exceeded, try applying filters such as service.name, etc. to reduce the data size\"))\n)\n\ntype ResourceLimitError struct {\n\terr error\n}\n\nfunc NewResourceLimitError(err error) error {\n\treturn &ResourceLimitError{err: err}\n}\n\nfunc (e *ResourceLimitError) Error() string {\n\treturn e.err.Error()\n}\n\nfunc (e *ResourceLimitError) Unwrap() error {\n\treturn e.err","sourceCodeStart":1,"sourceCodeEnd":25,"githubUrl":"https://github.com/SigNoz/signoz/blob/5069bf80b08f1f00d7e014eccc09902f9871004f/pkg/query-service/errors/clickhouse.go#L1-L25","documentation":"A ClickHouse resource guard in SigNoz wraps ErrResourceBytesLimitExceeded: the query exceeded the allowed number of bytes read/scanned. The error suggests adding filters because unbounded scans over huge tables (signoz_traces / signoz_metrics) are the usual cause.","triggerScenarios":"Running a trace or metrics query without service.name or time filters over a large dataset, e.g. listing all spans cluster-wide, or search queries with very broad filter combinations that scan tens of GB.","commonSituations":"Default dashboards querying without service filters on high-volume clusters; exploratory searches in the traces UI with only wildcards; after traffic spikes that push table sizes past the configured byte limit.","solutions":["Add selective filters, primarily service.name, then operation name, and tighten the time range","Check/raise the ClickHouse max_bytes_to_scan or SigNoz resource limit setting if the query legitimately needs the scan","Pre-aggregate or use shorter time windows for large-range queries"],"exampleFix":"// before\nGET /api/v1/traces?start=...&end=...\n// after\nGET /api/v1/traces?start=...&end=...&service.name=frontend&operation=HTTP%20POST%20/api","handlingStrategy":"fallback","validationCode":"if service == \"\" {\n    return errors.New(\"service.name filter required for this query\")\n}\nresp, err := api.SearchTraces(ctx, filters.WithService(service).WithTimeRange(window))","typeGuard":"func IsResourceBytesLimit(err error) bool {\n    var rle *errors.ResourceLimitError\n    return errors.As(err, &rle) && errors.Is(err, errors.ErrResourceBytesLimitExceeded)\n}","tryCatchPattern":"if err != nil {\n    if IsResourceBytesLimit(err) {\n        // degrade gracefully: shorter window or required filters\n        return runReducedQuery(window/4)\n    }\n    return err\n}","preventionTips":["Require service.name on wide search APIs by convention","Keep dashboards scoped to a service and bounded time range","Track bytes-scanned trends in system.query_log to catch growth early"],"tags":["clickhouse","resource-limits","query-cost","sigpoz"],"backgroundTag":"query-bytes-scan-limit-exceeded","analyzedSha":"5069bf80b08f1f00d7e014eccc09902f9871004f","analyzedAt":"2026-08-28T06:22:12.824Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}