我正在尝试设置一个 Docker 容器来使用 maven 构建我的 java 项目
我已经从 maven:3.2-jdk-7 创建了我的 Docker 文件并构建了映像。
当我执行时:
docker run -it --rm --name my-maven-project -v "$PWD":/usr/src/app -v "$HOME"/.m2:/root/.m2 -w /usr/src/ app -v "$HOME"/.ssh:/root/.ssh test mvn clean package -Dmaven.test.skip=true
大约需要 20 分钟才能完成..但如果我在主机上运行相同的 mvn 命令,则需要 2 分钟
我尝试通过使用为容器提供更多内存
-m 4GB
但它没有改变任何东西,查看 docker stats 容器几乎没有使用超过 2G
我正在从 OSX 运行所有这些
我需要做些什么才能在合适的时间内完成 Maven 项目?我非常惊讶在主机上需要 2 分钟时需要那么多时间..
这是 docker stats 在 maven 构建 10 分钟后所说的
CPU: 201.13%
Mem usage / limit : 2.508GiB
MEM % : 62.69%
NET I/O: 3.01kB / …Run Code Online (Sandbox Code Playgroud) 我正在尝试分析应用程序发送的信息,所以我设置了Charles,但令我惊讶的是没有注销.
在反编译应用程序后,我发现它不使用简单的REST调用,而是使用名为gRPC的库.
有没有一个好的工具可以让我看到从应用程序发送的内容?
我在 SpringBoot 应用程序中使用 JPA 存储库 我有一个后台任务,定期将数据库中的某些元素设置为“就绪” 我还有一个用户可以调用的端点,并且可以修改同一个表的行之一。
有没有办法避免一个又一个取消对方的写入?以这个场景为例
Table:
Key
id name is_ready
Run Code Online (Sandbox Code Playgroud)
0)初始数据有一个键(1 no_name false)
1)后台任务启动,即将通过设置修改表Key
is_ready to true
Key key = repo.findKeyByIsReady(false)
key.setIsReady(true)
repo.save(key) <--- does NOT yet execute this
Run Code Online (Sandbox Code Playgroud)
2)用户调用api端点将密钥名称更改为“new_name”并完成
3)现在后台服务执行repo.save(key),最终数据为
1 no_name true
Run Code Online (Sandbox Code Playgroud)
代替
1 new_name true
Run Code Online (Sandbox Code Playgroud)
基本上后台任务已经覆盖了用户设置的键名
有没有办法避免这种情况?交易在这里有何帮助?
concurrency ×1
docker ×1
grpc ×1
java ×1
jpa ×1
macos ×1
maven ×1
mysql ×1
performance ×1
proxy ×1
transactions ×1