Fastapi在docekr中进行部署之后,uvicorn占用的CPU非常高

前一段接点小活,做点开发,顺便学了学FASTAPI框架,对比flask据说能好那么一些,至少并发什么的不用研究其他的asgi什么的,毕竟不是专业开发,能少研究一个东西就省了很多的事。

但是部署的过程中突然之间在docker中的uvicorn占用直接50%起步,数据量大点的时候直接七八十,所以就一点点找问题的原因了。
没什么技术问题,都是不小心导致,记录一下,万一哪个未来大佬学习的过程中也会有这样的疑惑呢。
在这里插入图片描述

部署环境

centos7 宝塔 docker-compose
后端用到的东西:mysql+redis+fastapi

异常现象

docker中运行开始就50%以上的占用,运行接口量大的时候七八十占用也很正常。
在这里插入图片描述

解决思路

各种查找进程,发现主服务器中的uvicorn占用超高导致在这里插入图片描述

问题解决

一顿查找之后终于发现。
就是这个–reload导致的,我是本机开发方便,在部署的时候compose中这个运行的自动重启没去掉,于是就导致CPU占用超高。
在这里插入图片描述
删掉这个–reload之后,嗯,舒服了
在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Docker Java API在Docker Swarm上部署Docker Compose服务需要以下步骤: 1. 创建一个DockerClient对象,并设置ComposeCmdExecFactory为其DockerCmdExecFactory。 ``` DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder().build(); DockerClient dockerClient = DockerClientBuilder.getInstance(config) .withDockerCmdExecFactory(new ComposeCmdExecFactory()) .build(); ``` 2. 加载Docker Compose文件,并启动服务。 ``` File composeFile = new File("docker-compose.yml"); String projectName = "myproject"; Up up = dockerClient.composeUpCmd() .withProjectName(projectName) .withFile(composeFile) .execute(); ``` 在以上代码,我们使用`composeUpCmd()`方法构建`ComposeUpCmd`对象,通过`withFile(composeFile)`方法设置Compose文件的路径,通过`withProjectName(projectName)`方法设置Compose项目的名称,最后通过`execute()`方法启动服务。 3. 如果需要停止服务,可以使用`ComposeDownCmd`对象执行`execute()`方法来停止服务。 ``` Down down = dockerClient.composeDownCmd() .withProjectName(projectName) .execute(); ``` 在以上代码,我们使用`composeDownCmd()`方法构建`ComposeDownCmd`对象,通过`withProjectName(projectName)`方法设置Compose项目的名称,最后通过`execute()`方法停止服务。 需要注意的是,Docker Java API需要连接到Docker Swarm集群,所以在执行以上代码之前,需要确保Java应用程序所在的机器上已经正确配置了Docker Swarm集群,并且Docker Java API的配置文件指定了正确的Docker Swarm地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁同学.

赏个早餐吃?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值