cloudfoundry中弹簧引导执行器堆转储的行为



我正在使用带有多个实例的cloudfoundry。我正在尝试使用spring的/actuator端点生成heapdump。

我的怀疑是在cloudfoundry env的情况下,一次运行2个实例,它将为该实例生成heapdump。如何知道heapdump是针对哪个实例的,并且无论如何我们都可以访问特定的实例。

注意:我只想使用spring boot actuator/heapdump url选项。

我的怀疑是在cloudfoundry env的情况下,一次运行2个实例,它将为该实例生成堆转储。

您不可能真正提前知道请求将到达哪里。对你的应用实例的请求由Gorouter(循环(进行负载平衡,因此除非你的应用没有流量,否则请求可能会命中任何一个后端应用实例。

但是,您可以在事后确定请求所指向的应用程序实例。

  1. 在终端中,为您的应用程序运行cf logs

  2. 在另一个终端中,运行curl -v ...。输出将具有一个名为X-Vcap-Request-Id的标头。复制该guid。

    < HTTP/1.1 200 OK
    < Content-Type: text/html; charset=UTF-8
    < Date: Thu, 20 May 2021 12:27:39 GMT
    < Server: Apache
    < Vary: Accept-Encoding
    < X-Vcap-Request-Id: c254c0df-c03f-475f-6210-fe3eea7cf28a  # <-- this line
    < Content-Length: 399
    
  3. cf logs的输出中查找您在上一步中捕获的guid。这将标识请求的访问日志条目(请参阅vcap_request_id字段(。同一条记录上的app_index字段将告诉您哪个应用程序收到了请求。

    2021-05-20T08:27:39.85-0400 [RTR/0] OUT php-info.apps.pcfone.io - [2021-05-20T12:27:39.848995848Z] "GET / HTTP/1.1" 200 0 399 "-" "curl/7.64.1" "192.168.4.4:34744" "192.168.16.31:61075" x_forwarded_for:"23.115.134.147, 192.168.4.4" x_forwarded_proto:"https" vcap_request_id:"c254c0df-c03f-475f-6210-fe3eea7cf28a" response_time:0.008122 gorouter_time:0.000506 app_id:"c1985534-3ca3-4ada-8bd2-b9b7a57de440" app_index:"0" x_cf_routererror:"-" x_b3_traceid:"5bc96459099edbfd" x_b3_spanid:"5bc96459099edbfd" x_b3_parentspanid:"-" b3:"5bc96459099edbfd-5bc96459099edbfd"
    

如何知道heapdump是针对哪个实例的,并且无论如何都在那里,我们可以命中特定的实例。

这就是您想要的:https://docs.cloudfoundry.org/devguide/deploy-apps/routes-domains.html#surgical-路由

如果您发送X-Cf-App-Instance,您可以选择一个特定的应用程序实例。然后,您可以针对特定的应用程序实例,或者确保从所有应用程序实例中获得堆转储。

例如:curl myapp.example.com -H "X-Cf-App-Instance: 5cdc7595-2e9b-4f62-8d5a-a86b92f2df0e:9"

CCD_ 9的内容为CCD_。您可以使用cf app myapp --guid检索您的应用程序guid。APP_INDEX是基于零的,所以0是第一个实例,1是第二个实例,等等…

最新更新