当我在浏览器中加载Docker闪亮的应用程序域名时,它崩溃(显示为灰色),并且出现此错误:[ERROR:[_parse_http_data]无效的HTTP方法”。
我已经开发了一个Web应用程序,该应用程序由一个闪亮的应用程序(具有连接到RMySQL数据库的登录功能),一个网站和一个mariadb数据库组成。我将它们放到一个docker-compose文件中,并在本地计算机上对其进行了测试,效果很好。然后,我继续将它们部署到GCE的Kubernetes集群中,那也很成功。我使用cloudflare为闪亮的应用程序域(即trnddaapp.com)安装了ssl证书。现在,当我在浏览器中加载闪亮的应用程序域时,它会附加https并成功加载应用程序,但是大约一分钟后它崩溃了(显示为灰色)。我使用http加载了闪亮的应用程序外部ip,但不会崩溃。
我找到的最接近的解决方案是https://github.com/rstudio/shiny-server/issues/392,但是似乎没有其他解决方案可以解决我的问题。如果有人帮助我解决这个问题,我将不胜感激。
这是我使用kubectl日志[app pod name]检查时收到的错误消息,我得到此错误:
ERROR: [_parse_http_data] invalid HTTP method
ERROR: [_parse_http_data] invalid HTTP method
ERROR: [_parse_http_data] invalid HTTP method
我希望将闪亮的应用程序域(trnddaapp.com)附加https后,该应用程序不会崩溃。
答案 0 :(得分:0)
让我们从分析错误消息开始,它说:
[_parse_http_data]
因此我们知道您的应用程序正在接收某些信息,但是它不了解它是什么(可能是格式错误的HTTP / 1.0或HTTP / 1.1甚至是二进制数据),因此我们有一个
invalid HTTP method
现在我们确定这不是HTTP / 1.X调用,而是(未识别的)数据流。 现在我们知道这不是实例,因为它“部署”和“交付”了服务,但是里面的某些东西正在中断。
可能会发生一些事情,因为它在您的本地计算机上运行(我假设它可以访问更多资源,尤其是内存),这可能是资源分配的问题,并且一旦在容器中运行,它有可能会清空分配的资源并中断(也许是一个使用大量内存的实时调用的库?),但是我们不确定,除非我们可以在容器中对其进行调试,所以是否可以添加一个调试库来记录您的请求,以查看它是否解析了所有请求,并在某个时间点停止,为什么?我知道R-Studio的一个人创建了一个httpuv,该日志记录了可以按以下方式完成的每个请求:
devtools::install_github('rstudio/httpuv@wch-print-req')
然后,也许共享输出,看看为什么应用程序会像这样表现并杀死自己的服务。
我真的非常感谢您,希望借助这些日志,我们可能能够为您提供更多的信息。
再次感谢!
-JP