我们有以下基础设施来部署 PHP 应用程序:
因此,当您尝试访问该应用程序时,您会访问我们的 Nginx 虚拟机,该虚拟机具有一个负载均衡器,可以选择这 3 个节点之一并向那里发送您的请求。
当您点击某个节点时,这些 Traefik 容器之一会将您重定向到应用程序容器。部署应用程序进程为每个节点生成一个容器,因此我们有 3 个容器运行我们的应用程序,Traefik 选择其中一个。
问题:这个结构太慢了。
我们有另一种结构,只有一个 Nginx 代理和一个节点的 Docker Swarm。我们的应用程序在 80 毫秒内运行。
在我们的新结构中,它具有负载平衡和非常好的 DevOps 功能,我们在 2 秒内启动了我们的应用程序。
对于我们如何改进它有什么想法吗?当我们设置 Nginx 代理将请求发送到特定节点时,我们得到了 450 毫秒的响应时间,这仍然很慢。
问题出在容器操作系统上:Alpine Linux。
他们有一个关于它的 Gitlab 问题:https://gitlab.alpinelinux.org/alpine/aports/-/issues/14381
有一篇关于这种缓慢性能的文章:https://www.linkedin.com/pulse/testing-alternative-c-memory-allocators-pt-2-musl-mystery-gomes/
我们将容器更改为使用 Debian 映像,现在性能正常。