Asp.NetCore在CentOS网站卡死

2023-05-16

最近碰到项目的网站在高峰期卡死的现象。刚开始以为是数据库问题导致的卡死,就排查和改了数据的设置。然后观察几天发现网站还是会在高峰期卡死,然后改了点网站设置,准备第二天观察一下,星期二竟然又没出现卡死了,为此理解为服务器虚拟机不稳定,服务器抽风,以为这事就这么完了。

然而星期三竟然又卡死了,于是马上连上vnp排查问题,由于前几次都没当回事,然后用户还急着用,当时就重启web站点解决了,不过倒是想好了下次再出问题排查步骤。

1.先用浏览器访问网站,看是加载静态资源卡死了还是请求后台卡死的,以此断定问题出在web还是web连接数据库上。
2.如果所有请求卡死那么问题出在web上。在shell里curl登录页面来判断是web卡死还是客户端和web服务器网络或端口不通。
3.如果curl通那么说明是web网络和端口问题。
4.如果curl不通那么就查看Linux进程信息(ps aux | grep imedicallis)。
5.如果进程也正常那么查看端口信息(lsof -i:端口)。

经过排查是端口一直等待Close_Wait。
在这里插入图片描述
说明服务器无法再开端口供服务器连接了,至此找到卡死原因了,无法打开端口给客户端,先重启web让客户使用。

先排查连数据的httpclient是不是用了IHttpClientFactory,因为dotnetcore本身的HttpClient存在连接释放问题。由于这块地方在开发时候就重点测试了,应该没问题,而且别的项目也没问题,程序代码问题可以排查。

然后百度一下别人是否有类似经验,找到如下:
在这里插入图片描述

立马用ulimit -n查看了下最大打开文件数,发现是1024,看来就是这个原因了。然后从别的项目拷了/etc/security/limits.conf文件,在dba指导下高峰期更新了这个配置,在最下面加上如下:

# End of file
* soft    memlock   -1
* hard    memlock   -1
* soft    rss       -1
* soft    rss       -1
* soft    nproc     65535
* hard    nproc     65535
* soft    nofile    65535
* hard    nofile    65535
* soft    stack     -1
* hard    stack     -1

然后执行sysctl -p使配置生效,执行完重启web站点是web用新配置启动。同时ulimit -a查看配置是否修改成功。

Last login: Fri Mar 24 17:27:46 2023 from 14.204.0.229
[root@iris142 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63408
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63408
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@iris142 ~]# sysctl -p
[root@iris142 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63408
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63408
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@iris142 ~]# 

按理并发打开文件到1024也够可以了,为了看看是不是确实是这个原因。又找到网站进程号,查看这个进程打开文件数。

[root@iris142 ~]# ps aux | grep imedicallis
root     12108  0.0  0.0 112708   980 pts/0    S+   21:02   0:00 grep --color=auto imedicallis
root     24757  0.1  1.9 23373708 310868 ?     S<sl Mar14  23:06 /usr/local/dotnet/dotnet /dthealth/app/dthis/imedicallis/iMedicalLIS.dll --urls https://*:1444
[root@iris142 ~]# 

[root@iris142 ~]# lsof -p 24757

发现网站一启动就打开了快900个文件,其中包括dotnetcore运行时的库和相关依赖和网站文件,那么这个1024在高峰期卡死就很正常了,稍微访问些东西就打开文件达到1024了。
在这里插入图片描述
Linux下一切皆文件,socket也是文件,所以在打开文件数到1024后无法开启新的网络
在这里插入图片描述

这OS挺坑的啊,主要当服务器,竟然默认打开文件限制这么小,基本web服务器都不够用啊,不知道怎么想的,醉了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.NetCore在CentOS网站卡死 的相关文章

随机推荐

  • 使用sqlyog连接 Mysql 出现1251错误

    使用sqlyog连接 Mysql 出现1251错误 简述 xff1a 1251 client does not support authentication protocol requested by server consider upg
  • 准备给ubuntu18.04安装杀毒软件

    如题 xff0c 电脑最近总出现些奇奇怪怪的小问题 xff0c 还是得装个杀毒软件 xff0c 看是不是中病毒了 输入sudo apt get install clamtk 安装完成后 xff0c 输入clamtk 即可 xff0e 卸载方
  • 使用Nginx代理地址

    DotNetCore在Linux发布时候 xff0c 由于不止一个产品组发布网站 xff0c 不像以前大家都用IIS的80发布网站 那么就存在大家抢80端口的情况 xff0c 为了让大家不比加上端口为此用Nginx代理URL实现网站地址代理
  • CentOS安装Cache数据库

    适用CentOS7 6 CentOS8上安装Intersystem公司的Cache数据库 xff0c 资料基本是空白 xff0c 分享一下 首先安装解压软件unzip和libicu xff0c 最小化安装的缺 xff0c 全安装的不缺 yu
  • Cache数据库之ECP搭建

    Cache作为非关系数据库 xff0c 其强大毋庸置疑 首先其Globle结构 xff0c 直接暴露的表Globel数据 xff0c 以及提供的M语言操作Globle达到的最优查询速度 ECP xff08 企业缓存协议 xff09 更是提供
  • Sebia电泳绘图

    Sebia这仪器真是个奇葩的存在 自己仪器有图不存文件 xff0c LIS要的话还得自己按数据绘制 还有蛋白电泳 固定电泳 画不画参考线等不同要求 xff08 奇葩的很 xff09 按理这种事不属于lis范围 xff0c 无奈国内lis太卷
  • nginx代理与负载均衡

    随着谷歌浏览器不断的改变https调用websocket和非https资源的策略 xff0c 从谷歌大概70以后不允许https调用非https资源和ws的websocket 后面实现了wss解决谷歌这一策略的影响 随着谷歌到90后版本限制
  • FreeRTOS学习第一篇

    之前在STM32Nano开发板开发是基于裸机开发 xff0c 即自己在main方法写死循环 死循环轮流执行各个任务逻辑的方法 这样做直接简单 xff0c 但是不同任务有不同优先级 xff0c 对CPU响应要求不同 逻辑容易某个任务卡住了 x
  • FreeRTOS之heap4

    操作系统离不开内存管理 FreeRTOS提供了5种内存管理方法 实现在portable MemMang里heap1到heap5 每种管理方案策略不同 我采用的是比较有代表性的heap4管理方案 该模式定义了ucHeap全局数组充当堆内存池
  • FreeRTOSMini

    最近在研究实时操作系统FreeRTOS FreeRTOS作为开源的RTOS xff0c 源码规模不大 xff0c 可以供操作系统学习 xff0c 加上我的STM32 Nano开发板正好可以学习OS 借着五一放假宅家里学习 实现的FreeRT
  • 双master节点+keepalived方式部署K8s 1.18.20

    相关部署方式也挺多 xff0c 自己采用双master节点 43 单node节点方式 xff0c 并且采用keepalived部署1 18 20版本 xff0c 中间也出现过相关小问题 xff0c 但都一一处理 xff0c 记录以给需要的同
  • FreeRTOS之TCB

    FreeRTOSMini实现了最小任务调度 现在分开介绍进程调度重要部分 进程调度的基础首先是定义任务调度的数据结构 xff0c 来保存任务堆栈结构和任务状态所在状态列表 xff0c 然后就是任务的优先级唯一号等 最小Mini内核参照 Fr
  • FreeRTOS任务调度主要变量

    之前介绍的和FreeRTOS任务调度相关的数据结构即内存分配实现 xLIST heap 4 TCB结构体 任务调度就是基于这些结构体实现 这次介绍调度相关的主要变量 代码在FreeRTOSMini c文件签名部分 span class to
  • Base64串介绍

    以前写winform时候没接触过Base64 刚开始接触时候还不知道是个啥 最开始接触Base64串时候是仪器出图 很长一段时间我还真以为Base64就是表示图的 xff0c 很多人也是这么认为的 xff0c 这次介绍一下什么是Base64
  • FreeRTOS创建任务

    CPU有这些寄存器 R0 R12为通用寄存器 R13为栈顶指针 xff0c 在OS时候中断函数的R13使用MSP的指针 xff08 内核态 xff09 非中断里面使用PSP指针 xff08 用户态 xff09 正是有双堆栈指针可以保证OS切
  • FreeRTOS任务调度最后篇

    FreeRTOS开启任务调度 一篇说到启动任务调度最后启动Systick定时器 xff0c 通过SVC中断引导第一个任务执行 然后系统就在Systick的定时中断下调度任务执行 xff0c 这次介绍最后的部分 xff0c Systick和P
  • 从STM32-FreeRTOS到linux

    之前买的STM32的开发板学习裸机开发 了解裸机之后学习FreeRTOS来作为小型操作系统学习 xff0c 理解操作系统调度实现 一直想学习一下linux的内核 xff0c 之前下载源码和初步看了下感觉无从下手 有了RTOS的基础后 xff
  • C#实现图片旋转

    C 绘图正常是不涉及到旋转的 有时候会有旋转画笔的情况 比如条码打印字竖着打印 旋转图片一定角度绘制 或者斜着画水印 这时候就涉及到旋转画笔了 源码地址 通过graphics TranslateTransform Pcenter X Pce
  • C#调C++库返回字符串

    用C 调C 43 43 库函数返回字符串 xff0c 由于C 43 43 本身方法之间调用返回字符串都是一般都是申明void或int返回的方法 xff0c 然后通过char变量带出返回值 在C 43 43 调用这种之前自己先初始化char空
  • Asp.NetCore在CentOS网站卡死

    最近碰到项目的网站在高峰期卡死的现象 刚开始以为是数据库问题导致的卡死 xff0c 就排查和改了数据的设置 然后观察几天发现网站还是会在高峰期卡死 xff0c 然后改了点网站设置 xff0c 准备第二天观察一下 xff0c 星期二竟然又没出