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.uj5u.com/net/87867.html
標籤:.NET Core
