Health API在我的GCP Flex应用程序上受到重创 - 如何回拨?

时间:2017-06-24 17:06:32

标签: google-app-engine google-cloud-platform

GCP infra会在“/ _ah / health”上点击您的应用,以确定它仍处于活动状态。我的应用是“Flex”类型,并且该网址上的很多

enter image description here

除了其他任何东西之外,它使得日志难以导航:(

如何回拨测试健康终点的GCP频率?

2 个答案:

答案 0 :(得分:2)

您可configure how App Engine performs health checks against your VM instanceshealth_check: app.yaml health_check: enable_health_check: True check_interval_sec: 5 timeout_sec: 4 unhealthy_threshold: 2 healthy_threshold: 2 配置中托管您的应用。

  

Health checks

     

定期运行状况检查请求用于确认VM实例   已成功部署,并检查正在运行的实例   保持健康的状态。必须在每个健康检查中回答   指定的时间间隔。当一个实例失败时,它就是不健康的   响应指定数量的连续健康检查请求。一个   不健康的实例不会收到任何客户请求,但健康   支票仍将发送。如果不健康的实例继续失败   它响应预定数量的连续健康检查   将重新启动。

     

默认情况下启用运行状况检查请求,默认阈值为   值。您可以通过添加可选项来自定义VM运行状况检查   健康检查部分到您的配置文件:

False
     

您可以使用以下选项进行运行状况检查:

     
    

enable_health_check - 启用/禁用运行状况检查。默认情况下启用运行状况检查。要禁用运行状况检查,请设置为True。     默认值:1 second

         

check_interval_sec - 检查之间的时间间隔。默认值:1 second

         

timeout_sec - 运行状况检查超时间隔。默认值:1 check

         

unhealthy_threshold - 连续检查次数失败后,实例运行状况不佳。默认值:1 check

         

healthy_threshold - 成功响应此连续检查次数后,不健康的实例再次变为健康状态。     默认值:300 checks

         

restart_threshold - 当连续运行状况检查失败次数超过此阈值时,将重新启动实例。默认:     check_interval_sec

  

默认情况下,运行状况检查已打开,建议不要仅关闭运行状况检查以确保App Engine不向未响应的VM发送请求。相反,您可以控制$it = "(a(am,bam),b(dam,cam))"; function iDelimiter( $str ) { $count = 0; $str = str_split( $str ); foreach( $str as &$value ) { if( $value == "(" ) { $count++; } elseif( $value == ")" ) { $count--; } if( $value == "," && ! $count ) { $value = "|"; } } return explode( "|", implode( $str ) ); } function iParser( $str, $_prefix = "" ) { preg_match( "/^((?!(\(|\))).)*\((.*)\)$/", $str, $m ); if( count( $m ) < 4 ) { return ( strlen( $_prefix ) ? $_prefix . "." : '' ) . $str; } $prefix = ( strlen( $_prefix ) ? $_prefix . "." : '' ) . $m[1]; $str = $m[3]; if( strpos( $str, "(" ) === false ) { $return = explode( ",", $str ); $pad = preg_filter( '/^/', strlen( $prefix ) ? $prefix . '.' : '', $return ); return implode( $pad, "," ); } else { $str = iDelimiter( $str ); $return = array_map( 'iParser', $str, array_pad( array(), count( $str ), $prefix ) ); return implode( $return, ", " ); } } print_r( iParser( $it ) ); 来调整您希望检查VM运行状况的频率。

查看日志时,您始终可以从日志中过滤掉信息。查看Advanced Log filtering UI and syntax上的信息。

答案 1 :(得分:1)

正如其他人提到的那样app.yaml config page

截至发布日期,它并未说明默认值是什么。

以下是using System.Net; ... WebClient client = new WebClient(); client.DownloadFile("Your url","download location"); var的超级奇怪 - 对于某些设置值,GCP部署者会阻止我的部署。

对于&#39; check_interval_sec&#39;设置为200,导致部署失败,并显示以下消息:

check_interval_sec

设置为20,导致部署失败,并显示以下消息:

"Invalid value for field 'resource.checkIntervalSec': '6000'. 
 Must be less than or equal to 300"

设置为10,并且在控制台中确实是10秒(尽管出于某种原因,JVM同时出现了一堆线程)。

TL; DR:秒数不是&#39; check_interval_sec&#39; - 至少对于&#39; flex&#39;应用