求助(附日志)ASP.NET Core 部署在 Ubuntu 22.04 8 核 32G 阿里云下每月固定出现一次服务器失联情况,具体时间随机,失联后系统盘 IO 爆表,重启可解决,应该从哪里开始排查?完全没思路,附日志

157 天前
 drymonfidelia

半年前是每月本机 Redis 连接超时( StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=0KiB, 6???ms elapsed, timeout is 5000ms),程序大量使用了 Redis 缓存数据,日志里每隔几天就会出现这个错误,因为错误会自动重试,实际并没有影响到业务,因此一直没人管,不知道和每月固定服务挂掉一次是否有关),重启后就出现登录验证码 500 错误的问题,看日志找不到 dll ,见图: 我用 python 写了一个每 5 秒请求一次验证码接口,连续 2 次 500 错误则重启服务,稳定 3 个月后故障升级为每月服务器失联,失联期间日志没记录到任何错误,但客户从阿里云小程序看系统盘 IO 爆表: SSH 也连接不上。同一套系统以前部署在 Windows Server 下非常稳定,但因为一些非技术原因现在必须部署在 Linux 下。

2024 次点击
所在节点    .NET
26 条回复
aw2350
157 天前
.net 这玩意跨平台的稳定性还是差点,实际应用案例也不多,出了问题都找不到方案
drymonfidelia
157 天前
图片看不清可以右键打开原图。
drymonfidelia
157 天前
眼花放错日志了,日志里不是验证码接口,是微信公众号推送消息的接口,但错误原因是一样的,大量 System 开头的 dll 无法加载
drymonfidelia
157 天前
@drymonfidelia #3 systemd 自动重启后才会出现这个问题,手动重启可恢复正常
drymonfidelia
157 天前
@drymonfidelia #3 又说错了,日志里是微信公众号内网页登录的接口,排查了一整晚没研究出来不太清醒先去睡一会儿
drymonfidelia
157 天前
数据库用的是云 MySQL 数据库,不在服务器上。
thtznet
157 天前
优先考虑文件有没有可能被杀掉,国内的 VPS 有时会做一些多余的事情,虽然名义上为了安全。
Shuu
157 天前
上面的不太懂,监控上磁盘 IO 持续爆表的情况遇到过,都是因为内存被占满了,可以看看是不是有什么进程在不断吃内存
jgh004
157 天前
可能跟系统有关系,我用腾讯云 centos 系统,装的梯子,以前也经常三天两头 io 爆表,发工单人家也查不到问题。后来换了 ubuntu ,没事了。
thinkershare
157 天前
@drymonfidelia 服务程序没有日志,OS 也没用系统日志吗? 你的 Redis 是否有高频写入操作? 你给出来的信息实在太少了。我们部署在 Ubuntu 20.04 上的系统 4 年了,没出过什么问题。
thinkershare
157 天前
先试着将 runtime 和程序服务捆绑到一起发布,然后看看这个 dll 丢失是否还会存在。另外 StackExchange.Redis 高频写入会有问题,换库才能解决。
leaflxh
157 天前
服务器上有开 swap 吗

看到你用 redis 存大量数据,或许是内存爆了,然后向 swap 写数据,然后阿里云的普通硬盘的性能不足以支撑大量的随机读写
a33291
157 天前
在 centos7/8 rocky8/9 ubuntu18/20/22 kylin10 上都长期运行.net3.1/6,没遇到过这种问题

至少要知道是什么进程吃 io 吧,.net 这个报错看不出和磁盘之间有关
应该有监控系统能定时监测 io,先找谁吃掉 io 的在说,讲证据而不是猜测打胡乱说
blackeeper
157 天前
系统没有 swap 分区的可以考虑手动加一个。
skwyl
157 天前
可以看看 12 楼得方案,swap 还真有可能出问题,阿里云得磁盘高频写入独取数据磁盘占用会高
hez2010
157 天前
你可以挂一个 dotnet-trace 在后台跑着,等出问题了用 PerfView 看 trace 文件,说不定能抓到一些线索。
hez2010
157 天前
顺带一提,阿里云的服务器里内置的安全软件(无论 Linux 还是 Windows Server )有时候也是出现莫名其妙问题的原因之一
StoneHuLu
157 天前
先丢 docker 里跑一阵子看看 docker 挂不挂
drymonfidelia
157 天前
@thtznet 没有被杀掉,手动重启就能正常运行
@Shuu 内存占用率一直很低
@thinkershare 没有高频写入,只有高频读取,读取量远大于写入
@leaflxh 确实是没有 swap ,但是 avail Mem 一直在 10GB 以上
thinkershare
157 天前
@drymonfidelia 实在不行,采用 @StoneHuLu 说的,跑在容器里面看看,限制下资源使用率。或者使用 @hez2010 说的,上追踪看看,服务器性能没问题,应该影响也不大。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/997407

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX