服务器内存占用高 ERP系统很卡 并且处理数据很慢

服务器系统 2008R2,数据库2008R2
双核 单八核CUP,内存4条32G三星 共128G

目前情况是 系统使用的ERP很卡,并且数据处理慢,各接口传输的数据也慢
请技术分析一下 哪里出了问题 要怎么解决

img

img

平时一开始服务器 内存就一直高居不下,128G就占用了70-85G ,显示是SQL占用最高,并且还是没插网线的时候

img


CPU偶尔跳100% 持续8-15秒

img


img


这是服务器SQL数据库内存分配界面以及 ERP数据库目前100多G

检查 sqlserver中耗时指令,看是否可以优化



select top 100 qs.total_worker_time,last_worker_time,min_worker_time,max_worker_time,last_execution_time,execution_count, 
    SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
    ((CASE statement_end_offset 
        WHEN -1 THEN DATALENGTH(ST.text)
        ELSE QS.statement_end_offset END 
            - QS.statement_start_offset)/2) + 1) AS statement_text
        ,st.text
        ,*
     FROM sys.dm_exec_query_stats AS QS
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST
order by qs.max_worker_time desc

检查 mssql 中,并发任务锁状况,看是否可以减少并发或提高运行效率

检查触发器业务是否占用时间过长,是否可以使用 service broker 队列来代替触发器

检查是否有大量使用临时表的存储过程,查看 tempdb 设置是否匹配消耗

检查是否存在数据库错误,dbcc checkdb 一下

1、脱离业务来分析,不太稳妥
2、先把杀毒软件去除一个
3、根据你截图来看,需要先优化sqlserver

你肯定是有大量的SQL语句需要进行优化,SQL有个查询计划:

img


你先把使用频率高的SQL语句复制出,一条条去分析,看下开销最大的在哪里,然后一条条语句去优化。
也可以考虑下redis这些缓存数据库,把常用数据放到redis里面,减少硬盘IO,其实现在一般数据库瓶颈是在硬盘IO上。

你这个需要根据服务器的实际情况去查找原因,根据你提供的数据,断网状态可以排除客户端连接引起的。
CPU占用很高可能是SQL语句引起的,使用Sql Server Profiler 找出耗性能的SQL 语句,80%的性能问题都是SQL语句引起的。
利用排除法,先找到导致问题的原因,才能对症解决。

img


你把这个最大内存改的小一些,我们公司的ERP也出现过这个问题

1.先找到占用内存大的原因,再根据原因处理;如果是要执行大量计划或者数据传输就调整计划执行频率或者传输频率;如果执行大量查询那就就建立缓存。