我们有一些API是托管在AWS弹性豆茎。为了隔离它们的环境,我们决定将所有这些应用程序组合到单个EC2实例中。安装完成后,我遇到了性能问题。响应时间非常慢(~58秒)
我看了码头统计,但内存没有占用,CPU不是尖峰,所有似乎都是正常的。这不是一个新的应用程序,我们已经使用这个应用程序超过一年了。
让我分享我的docker文件内容和我构建它的方式,以及我用来运行图像的命令。
EC2实例:美国东部1区的 t3a.small
文档:
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 .
码头运行命令: sudo docker run -e ASPNETCORE_ENVIRONMENT=Dev -itd --network=ss-subnet --ip 172.18.0.3 ss-webapi
ss-子网网络使用桥接模式驱动程序.
在同一台机器上,有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;
}
我不知道能做些什么来提高速度。我怀疑这与网络有关,但还不够确定。
发布于 2020-06-21 23:58:42
这个问题已经被追踪到了。我的API托管在美国东部-1区域,而我试图访问ap-东南-1区域的数据,因为存在延迟。为了减少成本和延迟问题,我将把所有的资源移到一个单一的区域。
https://stackoverflow.com/questions/62475504
复制