Windows2019 服务器,sqlserver2019数据库,netcore3.0后端接口。平均200人同时在线。每天有2~4次突然卡死,CPU达到100%。重启以后恢复正常。
遇到Windows 2019服务器上运行SQL Server 2019和.NET Core 3.0后端接口,平均200人在线,但每天出现2至4次CPU使用率达到100%并导致系统卡死的问题,可以采取以下步骤来诊断和解决这一问题:
使用性能监控工具:首先,使用Windows自带的任务管理器或更详细的资源监视器来观察CPU使用率突然升高的时刻哪些进程或服务占用了大量CPU资源。也可以使用第三方工具如Process Explorer或Process Hacker来获取更详细的进程信息。
SQL Server Profiler/Extended Events:针对SQL Server,使用SQL Server Profiler(如果可用)或Extended Events来跟踪SQL查询,找出可能导致CPU高负荷的查询操作。
应用程序日志:检查Windows事件查看器中的系统和应用程序日志,寻找错误或警告信息,特别是与.NET Core应用、SQL Server或系统相关的。
索引调整:检查数据库表的索引策略,无效或缺失的索引可能导致全表扫描,从而消耗大量CPU资源。
查询优化:分析高CPU使用时段的SQL查询,看是否可以通过优化查询逻辑、减少JOIN操作、使用更有效的数据类型等方法来减少CPU负载。
应用日志:确保.NET Core应用有足够详细的应用日志记录,通过日志分析确定问题发生的具体时间点和相关操作。
性能剖析:使用.NET Core Performance Profiler
或Visual Studio的诊断工具来分析应用程序的CPU使用情况,识别热点函数。
SQL Server配置:检查SQL Server的配置设置,如最大内存使用量,确保它不会过度消耗系统资源,导致其他进程资源不足。
.NET Core应用池设置:在IIS中,调整.NET Core应用池的回收设置,限制其内存使用,并确保有合理的请求队列和工作进程数量配置。
系统与软件更新:确认Windows Server、SQL Server以及.NET Core框架都已应用最新的安全和性能更新。
计划性重启:如果问题根源难以迅速定位,可以考虑设置在低峰时段自动重启服务器或服务,作为一种临时缓解措施。
Windows性能分析器(WPA):可以用来进行更深入的系统性能分析,收集ETL跟踪文件,分析CPU瓶颈的具体原因。
分布式事务:检查是否有长时间运行或未正确处理的分布式事务,这可能与MSDTC服务有关。
通过上述步骤,逐步排查和解决CPU突然满载的问题。如果问题依旧,可能需要考虑聘请专业的技术支持或顾问进行深入调查。
使用任务管理器或资源监视器查看哪个进程占用了高CPU。
检查SQL Server是否有长时间运行的查询,这可能导致CPU峰值。
分析.NET Core接口日志,看是否在高负载时出现异常。
确认服务器是否有足够的内存,不足可能引发频繁的磁盘换页导致CPU高。
安装杀毒软件并进行全盘扫描,排除病毒或恶意软件。
检查服务器更新设置,避免在业务高峰期自动更新。
参阅云服务器 ECS Windows系统ECS实例中CPU使用率较高问题的排查及解决方案 解决方案
结合我遇到的情况你这应该是遇到慢SQL了,是某一个或者多个查询语句执行很慢甚至timeout造成的CPU被打满了
Windows系统ECS实例中CPU使用率较高,即CPU使用率≥80%。
问题原因
CPU使用率较高可能有以下原因。
ECS实例遭到病毒木马入侵。
ECS实例中第三方杀毒软件运行。
ECS实例中应用程序异常、驱动异常、高I/O使用率或高中断处理的应用程序。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。