09.12、生产环境配置
生产环境配置
欢迎回到第 9 章的学习。在上一节,我们学习了测试和验证。现在我们要学习生产环境配置,这对于在生产环境中运行可观察性系统非常重要。
本节将学习:采样策略、批处理配置、资源限制、以及错误处理。
采样策略
采样策略的作用是什么? 减少数据量,控制存储和传输成本,降低 Collector 负载,提高系统性能。
采样策略有哪些类型呢?
第一种:固定采样率(traceidratio)。 配置固定的采样率,比如 10%,所有请求按照这个比例采样。简单易用,适合大多数场景。
第二种:基于父级的采样(parentbased_traceidratio)。 根据父 Span 的采样决定,如果父 Span 被采样,子 Span 也被采样,否则不采样。保证链路完整性,适合分布式系统。
第三种:基于条件的采样(自定义)。 根据请求属性决定是否采样,比如只采样错误请求、慢请求。更灵活,但配置复杂。
配置代码:
文件路径:
src/main/resources/application.properties# fixed sampling rate(10%) otel.traces.sampler=traceidratio otel.traces.sampler.arg=0.1 # Or use parent-based sampling (recommended for distributed systems)) # otel.traces.sampler=parentbased_traceidratio # otel.traces.sampler.arg=0.1
批处理配置
批处理配置的作用是什么? 优化数据导出性能,减少网络调用,提高吞吐量,降低延迟。
批处理参数有哪些呢?
第一个:批次延迟(schedule.delay)。 批次等待时间,比如 5 秒,超过这个时间就导出批次。
第二个:最大队列大小(max.queue.size)。 内存中队列的最大大小,比如 2048,防止内存溢出。
第三个:最大批次大小(max.export.batch.size)。 每个批次的最大 Span 数量,比如 512,控制批次大小。
第四个:导出超时(export.timeout)。 导出操作的超时时间,比如 30 秒,防止长时间阻塞。
配置代码:
文件路径:
src/main/resources/application.properties# batch processing configuration otel.bsp.schedule.delay=5000 otel.bsp.max.queue.size=2048 otel.bsp.max.export.batch.size=512 otel.bsp.export.timeout=30000
资源限制
资源限制的作用是什么? 防止可观察性系统占用过多资源,影响应用性能,确保系统稳定性。
资源限制包括哪些方面呢?
第一个:内存限制。 配置内存批处理大小、内存限制参数,配置 JVM 堆内存,防止内存溢出。
第二个:CPU 限制。 控制 CPU 使用率,避免占用过多 CPU,影响业务逻辑。
第三个:网络限制。 控制网络带宽使用,避免网络拥塞,影响数据传输。
配置代码:
文件路径:
src/main/resources/application.properties# Resource limit configuration otel.bsp.memory.limit=64
JVM 启动参数(在启动脚本中):
java -Xmx512m -Xms256m \ -XX:MaxMetaspaceSize=256m \ -jar order-service.jar
错误处理
错误处理的作用是什么? 处理临时故障,提高系统可靠性,确保应用在 Collector 故障时仍能正常运行。
错误处理机制有哪些呢?
第一个:重试策略。 配置重试次数、重试间隔,使用指数退避,处理临时网络故障。
第二个:降级处理。 在 Collector 不可用时,继续运行应用,丢弃或缓存数据,避免影响业务。
第三个:错误日志。 记录错误信息,便于排查问题,配置日志级别,控制日志量。
配置代码:
文件路径:
src/main/resources/application.properties# error handling configuration - Retry Strategy otel.exporter.otlp.retry.enabled=true otel.exporter.otlp.retry.max.attempts=5 otel.exporter.otlp.retry.initial.interval=1000 otel.exporter.otlp.retry.max.interval=5000 # error log configuration logging.level.io.opentelemetry=WARN logging.level.io.opentelemetry.exporter=ERROR
本节小结
在本节中,我们学习了生产环境配置:
第一个是采样策略。 固定采样率、基于父级的采样、基于条件的采样,减少数据量,控制成本。
第二个是批处理配置。 批次延迟、最大队列大小、最大批次大小、导出超时,优化性能,提高吞吐量。
第三个是资源限制。 内存限制、CPU 限制、网络限制,防止资源耗尽,确保系统稳定性。
第四个是错误处理。 重试策略、降级处理、错误日志,提高可靠性,确保系统正常运行。
生产环境配置流程: 采样策略 → 批处理配置 → 资源限制 → 错误处理 → 稳定运行。
这就是生产环境配置。通过合理的配置,我们可以在生产环境中稳定运行可观察性系统。
在下一节,我们将学习微服务间追踪传播。学习如何在微服务之间传播追踪上下文。