项目从.NET5.0 升级到 8.0,加起来 1.5 万行代码, Linux 下编译经常要半个小时,有的时候又几秒钟就能编译完, Windows 下一直非常正常,怎么排查?
服务器是 aws m8g.2xlarge 8 核 32GB 内存
整个服务器上就一个 Docker ,里面运行这个服务
以前 .NET 5 的都是秒编译
现在经常要半个小时,有时甚至五六个小时编译不完
有时候又能 2 秒编译,不知道为什么docker system prune -a
运行了好几遍,没效果
开 Debug 是因为刚才想试试是不是 Release 导致的编译缓慢才改的,并不是导致问题的原因
可以试试给 dotnet build 加几个参数:-clp:PerformanceSummary -tl:false
这样能看到编译时间到底花在了具体哪个任务上
这很显然需要一个日志来看看时间都花费在哪里了。
build 的时候加个参数吧
dotnet build -bl:SpecificStep.binlog
如果是编译为镜像,那么原因可能是 net8 不支持仿真编译了,你需要更改编译的命令,让其使用交叉编译。这个问题之前遇到过。
加上了,但是似乎没有输出别的东西
好奇怪的问题,似乎同一套代码,刚才测试 1 楼的参数 3 分钟就编译完了,现在测试 2 楼的参数又编译了 10 分钟还没出来,每次编译时间完全随机
或许是 linux 下编译器的问题呢?而不是项目代码
估计是 dotnet restore 下载资源网速不稳定
改善网络
外面发布文件,再基于发布文件+runtime 打包,避免编译
加上加个 no restore ,不联网检查 nuget 包, 看看是不是网络问题
说两个微软给我的印象:
1 、大学时第一次接触 Visual Studio ,进去之后字体默认是宋体,编程字体用非等宽,写出来那个代码看着非常膈应!(当然可以调整,但非要让每一个人一上来都调整一遍?这不就做事做不到位,招人恶心嘛)。第一次印象就很差,任你网上再吹什么宇宙第一 IDE ,内心还是抗拒。
2 、dotnet7 出来的时候,试了一下,Mac 电脑上命令行 init 一个项目,要好几秒。我心想,就建几个空目录,要好几秒?印象又一次很差!直接从 init 到放弃!任你网上吹什么不考虑工作生存压力,心中理想代码什么写 C#, 什么 dotnet 别提多爽云云。。。我内心还是抗拒,完全不信!
换一台 linux 编译,排查下
买个墙外服务器编译,就是下载网络问题,不用看
哥们,你到底是干嘛的,高强度刷 V 站发帖,各方面问题都涉及,业务这么广的吗
跑个 benchmark 吧。有时候是服务器的问题。
墙内下载依赖包的确是会有网络问题
哈哈
现在.net 还能开发 linux 的应用了?
14 年就支持了吧,.NET 早就改名 .NET Core 了
现在是真正意义的跨平台和架构(包括龙芯之类) 😁
是不是加 arm 了 如果你加 arm 和 arm64 之类的确实是这样的,我用 github action 编译 x86 非常快,但是一旦启用 arm64 就慢成屎, 甚至会超时
.net core 已经入土,现在就叫.net
微软改名部
比方我说我想设置一个接口,要求访问的人必须携带 token ,而且可以设置单天访问次数,单位时间内访问的次数限制。当然最好是可视化的,带个后台去监控每个用户访问的访问次数,时间…
里面的内容浩如烟海,无从下手,一点头绪都没有 尤其是宅在 B 站很费时间,但是收获也有,但是甚微 说说看,大家有什么好的建议,或者自身的实践经历 我是门外汉,我觉得记录是个非…
娃打小,幼儿园开始,老师就说不合群,不搭理老师。不到 6 岁,媳妇就找了个儿童心理咨询的,父母和娃每周都去聊一聊。 一年级的时候在班里就属于经常被揪各种纪律卫生问题的小男孩之一…