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

2023-12-04 10:47:32 +08:00
 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 下。

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

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

至少要知道是什么进程吃 io 吧,.net 这个报错看不出和磁盘之间有关
应该有监控系统能定时监测 io,先找谁吃掉 io 的在说,讲证据而不是猜测打胡乱说
blackeeper
2023-12-04 11:26:54 +08:00
系统没有 swap 分区的可以考虑手动加一个。
skwyl
2023-12-04 11:27:23 +08:00
可以看看 12 楼得方案,swap 还真有可能出问题,阿里云得磁盘高频写入独取数据磁盘占用会高
hez2010
2023-12-04 13:23:00 +08:00
你可以挂一个 dotnet-trace 在后台跑着,等出问题了用 PerfView 看 trace 文件,说不定能抓到一些线索。
hez2010
2023-12-04 13:24:14 +08:00
顺带一提,阿里云的服务器里内置的安全软件(无论 Linux 还是 Windows Server )有时候也是出现莫名其妙问题的原因之一
StoneHuLu
2023-12-04 13:44:59 +08:00
先丢 docker 里跑一阵子看看 docker 挂不挂
drymonfidelia
2023-12-04 13:53:07 +08:00
@thtznet 没有被杀掉,手动重启就能正常运行
@Shuu 内存占用率一直很低
@thinkershare 没有高频写入,只有高频读取,读取量远大于写入
@leaflxh 确实是没有 swap ,但是 avail Mem 一直在 10GB 以上
thinkershare
2023-12-04 14:33:49 +08:00
@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