• 一次网站负载问题的解决


    环境:
        服务器4核4GB内存,运行基于动易SW7的网站及基于OBLOG4的博客,数据库基于MSSQLSERVER2000。网站和博客大部分都做了静态化

    现象:
        自5月份以来系统,SW7速度突然变慢,前后台页面打开速度以及静态页面生成速度都极慢。静态页面打开速度影响不大

    分析:
    1 服务器安全
        经过仔细检查,服务器没有入侵迹象。也没有发现有效的攻击记录。

    2 网络访问量
        分析网站日志以及流量统计,未发现访问量的明显变化,因为网站速度慢访问量甚至还有所下降。

    3 服务器负载
        SQLSERVER进程占用了2GB内存。IIS进程占用约800MB,CPU利用率波动较大。总体上看负载还可以,CPU波动大应该与SQLSERVER有很大关系

    4 数据库
        首先检查数据量,SW7的信息数据量在15W左右,日志表数据量在2W左右。OBLOG博文信息数据量在4W左右,日志表数据量在1W以下。应该讲这个数据量是很小的,服务器绝对能跑得动。但表现出来的现象应该就是出在数据库,于是清空了两个系统的日志表,同时针对SW7的信息表做了分表,将2008年以前的数据分了出去,这时信息表数据量在10W左右。经过上面操作后,SW7的访问速度仍然非常慢。
        结合现象再次分析,认为一定是有某处数据库瓶颈没有找到。再次分析SW7的表使用情况,未发现有更多数据量数据表,问题排查一度无果。后来不经意间在备份数据库时发现OBLOG的备份文件竟然有近2个GB,远远超过了SW7(SW7的备份文件大小在800MB左右),很显然OBLOG数据库里一定有一张超大表。于是用脚本将OBLOG中各表的数据量以及占用空间列出来,脚本如下:
    create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))
    exec sp_MSforeachtable "insert into #t exec sp_spaceused '?'"
    select * from #t
    drop table #t

        不列不知道一列吓一跳,发现oblog_trackback这张表竟然有近250W条记录,这是何方神圣,立刻GOOGLE。原来这是OBLOG的引用通知记录表,同时在OBLOG的官方网上也有人反映此表数据量超大的问题(不过也就10来W,和我这个比起来还是差远了)影响性能,官方的解答很简单 1 在OBLOG管理后台关掉引用通告 2 清空此表。
         于是 truncate table oblog_trackback,然后进后台设置。再看网站速度明显快了很多,看来问题的症结找到了。

    体会
    1 分析问题还是钻了死胡同,只盯着几张主表看,没有注意其他表
    2 这个问题应该早已有之,只不过症状不是很明显,所以也就得过且过了,最后小问题变成大问题
    3 OBLOG应该在后台管理引用通告开关调节的地方注明一下,此选项打开可能会影响网站性能。
  • 相关阅读:
    jenkins 项目部署方式二
    java 消息机制 ActiveMQ入门实例
    图片验证码大全
    Java列表分页查询结果导出到CSV文件,导入CSV文件并解析
    PHP之数组array
    JDK运行.Jar文件的控制台命令是什么
    ireport开发报表,Java和JSP端如何集成
    java Map及Map.Entry详解
    MFC
    Syms函数
  • 原文地址:https://www.cnblogs.com/lykyl/p/1538522.html
Copyright © 2020-2023  润新知