【发布时间】:2020-10-10 00:24:38
【问题描述】:
我们有一些 API 托管在 AWS Elastic beanstalk 中。我们决定将所有这些应用程序组合在单个 docker 容器下的单个 EC2 实例中,以隔离它们的环境。 设置后,我遇到了性能问题。响应时间极慢(~58 秒)
我查看了 docker stats,但内存没有占用,CPU 没有峰值,那里似乎一切正常。这不是我们已经使用该应用程序一年多的新应用程序。
让我分享一下我的 docker 文件内容以及我构建它的方式以及我用来运行图像的命令。
EC2 实例: t3a.small in us-east-1 区域
Dockerfile:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
COPY release_dll/ /root/
WORKDIR /root/
ENV ASPNETCORE_URLS="http://*:80"
EXPOSE 80
ENTRYPOINT ["dotnet", "vizdom.webapi.dll"]
Docker 构建命令: sudo docker build -t ss-webapi .
Docker 运行命令: sudo docker run -e ASPNETCORE_ENVIRONMENT=Dev -itd --network=ss-subnet --ip 172.18.0.3 ss-webapi
ss-subnet 网络使用桥接模式驱动程序。
在同一台机器上,有 nginx 反向代理将请求路由到各个容器
例如:
location /webapi{
rewrite ^/webapi(.*) $1 break;
proxy_pass http://172.18.0.3:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_buffering off;
}
我不知道可以做些什么来提高速度。我怀疑这与网络有关,但还不够确定。
【问题讨论】:
标签: docker asp.net-core nginx amazon-ec2