1.報錯,too many open files 查詢方法:查看linux允許的最大句柄數,命令ulimit -a。然後使用命令lsof -p 進程id可以查看單個進程所有打開的文件詳情,使用命令lsof -p 進程id | wc -l可以統計進程打開了多少文件,如果文件數過多使用lsof -p 進 ...
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