netcore发布Linux相关问题记录

1.报错,too many open files

查询方法:查看linux允许的最大句柄数,命令ulimit -a然后使用命令lsof -p 进程id可以查看单个进程所有打开的文件详情,使用命令lsof -p 进程id | wc -l可以统计进程打开了多少文件,如果文件数过多使用lsof -p 进程id命令无法完全查看的话,可以使用lsof -p 进程id > openfiles.log将执行结果内容输出到日志文件中查看。

最终原因:Assembly.Load(byte[])每次加载会载入当前dll与相关dll,多次重复的话就会导致文件打开数超过默认值1024导致报错。

 

2.超时,Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool

最终原因:多线程同时并发,connection.open时间会超过15s,需要设置connection timeout=300。

 

 实际原因:同时并发导致线程池中没有对应缓存,都必须新建连接,如果先连接一个,再进行10并发就不会有此问题。

 

3.一些命令

ulimit -n 2048

apt-get update

apt-get install procps

Ps -aux

lsof -p 进程id | wc -l

lsof -p 进程id > openfiles.log

Nohup dotnet...

 

4.docker相关

启动  systemctl start docker
重启  systemctl restart  docker ; sudo service docker restart
关闭  service docker stop ; systemctl stop docker

posted @   Coderrrrrr  阅读(302)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示