我有一个在两个GCP实例上运行的dockerized Go应用程序,将它们与各自的外部IP结合使用时,一切正常,但是通过负载平衡器,它们要么响应缓慢,要么响应502服务器错误。健康检查似乎还可以,所以我真的不明白。
在日志中,引发的错误是“ failed_to_connect_to_backend”。我已经看到了有关此问题的其他答案,但是似乎没有一个答案可以满足我的情况。我无法修改应用程序的提供方式,因此这似乎不是超时。
答案 0 :(得分:0)
要对由于“ failed_to_connect_to_backend”而导致的来自负载均衡器的502响应进行故障排除。我会检查以下内容:
1)通常,“ failed_to_connect_to_backend”错误消息表明负载均衡器无法连接到后端,研究URL映射规则也是一个不错的起点。我还建议您查看负载均衡器的URL映射,以确保正确定义了主机规则,路径匹配器和路径规则,并符合this article中的描述。
2)还要检查后端实例是否耗尽了资源,如果后端服务器不堪重负,它将拒绝传入的请求,可能导致负载均衡器放弃它,并返回您遇到的特定502错误。对于Apache,您可以使用this link和nginx this link。另外,使用“ netstat”和watch command一次检查输出多少个已建立的连接。
3)我还建议再次使用直接对实例的HTTP(S)请求进行测试,请求与报告502相同的URL。您可以在VPC网络中的另一个VM实例中进行此测试。
答案 1 :(得分:0)
检查您的后端是否阻止了Google的云CDN IP地址。可以在以下地址找到这些地址:https://cloud.google.com/compute/docs/faq#find_ip_range
答案 2 :(得分:0)
这不止一次发生在我身上,我在服务器上使用apache,问题不在于CPU,而在于配置,
我将apache mpm_event
与php-fpm
结合使用,并且有许多设置会限制您希望apache和fpm允许的最大请求量。
在我的情况下,我将Apache MPM配置MaxRequestWorkers
从默认值150增加到600,并将PHP FPM配置pm.max_children
增加到80
(我不记得默认值是多少这里)
这可以按预期工作,希望它可以帮助您推断到自己的堆栈中。