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

原文地址:https://www.cnblogs.com/zhanglb163/p/11973575.html