当 APM Server 或 Elasticsearch 宕机时会发生什么?

编辑

如果 Elasticsearch 宕机

APM Server 没有内部队列来缓冲请求,而是利用 HTTP 请求超时来充当背压。如果 Elasticsearch 宕机,APM Server 最终会拒绝传入的请求。APM Server 和 APM 代理都会相应地发出日志。

如果 APM Server 宕机

如果 APM Server 宕机,一些代理具有内部队列或缓冲区,可以临时存储数据。一般而言,队列会很快被填满。假设 APM Server 宕机时数据会丢失。调整这些队列/缓冲区会增加代理的开销,因此更新默认值时请谨慎。

  • Go 代理 - 具有可配置大小的循环缓冲区:ELASTIC_APM_BUFFER_SIZE
  • Java 代理 - 具有可配置大小的内部缓冲区:max_queue_size
  • Node.js 代理 - 没有内部队列。数据会丢失。
  • PHP 代理 - 没有内部队列。数据会丢失。
  • Python 代理 - 具有可配置大小和刷新间隔时间的内部事务队列
  • Ruby 代理 - 具有可配置大小的内部队列:api_buffer_size
  • RUM 代理 - 没有内部队列。数据会丢失。
  • .NET 代理 - 没有内部队列。数据会丢失。