Web站点性能优化经验分享

这篇具有很好参考价值的文章主要介绍了Web站点性能优化经验分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        之前负责IT团队项目管理工作,手里有几套业务站点。其中一个站点被业务吐槽比较严重,主要涉及功能模块缺失、站点性能差会出现卡死的现象,同时也被旁边的项目团队埋怨调用我们的接口会比较慢,甚至超时的情况。

        鉴于业务压力,准备对这个站点进行性能优化,打算从页面性能和DB性能两方面入手:

一、页面性能优化

1、发现问题

想要优化web页面性能,少不了先看看是哪些页面的问题,如何来诊断页面方法有很多,大家可以去网上搜罗一下,这里我介绍一种比较常用的方法,通过IIS日志记录分析来定位响应比较慢的页面。

统计截图如下:

Web站点性能优化经验分享

讲解如何统计IIS日志,需要先聊聊IIS日志的格式。日志示例如下:

#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2010-09-30 05:00:51
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status
2010-09-30 07:16:59 W3SVC739 60.28.240.139 GET /robots.txt - 80 - 74.6.75.14 Mozilla/5.0+(compatible;+Yahoo!+Slurp;+http://help.yahoo.com/help/us/ysearch/slurp) 200 0 0
2010-09-30 07:16:59 W3SVC739 60.28.240.139 GET /blog/category/index/ASP - 80 - 72.30.177.172 Mozilla/5.0+(compatible;+Yahoo!+Slurp;+http://help.yahoo.com/help/us/ysearch/slurp) 301 0 0
date: 表示记录访问日期;
time: 访问时间;
s-sitename: 表示你的虚拟主机的代称。
s-ip: 访问者IP;
cs-method: 表示访问方法,常见的有两种,一是GET,就是平常我们打开一个URL访问的动作,二是POST,提交表单时的动作;
cs-uri-stem: 就是访问哪一个文件;
cs-uri-query: 是指访问地址的附带参数,如asp文件?后面的字符串id=12等等,如果没有参数则用-表示;
s-port: 访问的端口
cs-username: 访问者名称
c-ip: 来源ip
cs(User-Agent): 访问来源;
sc-status: 状态,200表示成功,403表示没有权限,404表示打不到该页面,500表示程序有错;
sc-substatus: 服务端传送到客户端的字节大小;
cs–win32-statu: 客户端传送到服务端的字节大小;

 Web站点性能优化经验分享

 2、解决问题

现在已经找到需要优化的页面了,我们需要怎么去优化呢?至上而下,我整理了一下优化思路如下:

1)先查看页面加载内容是否过大,js、css、库文件会不会影响页面加载

     Web站点性能优化经验分享

根据访问频率和耗时情况,得到需要优化的路径如下:

Web站点性能优化经验分享

 

2)页面后台逻辑是否占用太多性能引起页面加载慢

3)是否有等待的方式调用耗时大的外部接口

二、DB性能优化

DB性能优化思路很多,我选择了一种比较粗暴直接的方式,大概还是从发现问题和解决问题2方面入手:

1、发现问题

1)慢查询sql语句检查,先找出数据库里占用资源和性能多的sql语句

SELECT top 200 last_execution_time  N'上次执行时间'

        ,total_physical_reads N'物理读取总次数'

        ,total_logical_reads/execution_count N'每次逻辑读次数'

        ,total_logical_reads  N'逻辑读取总次数'

        ,total_logical_writes N'逻辑写入总次数'

        ,execution_count  N'执行次数'

        ,total_worker_time/1000 N'所用的CPU总时间ms'

        ,total_elapsed_time/1000  N'总花费时间ms'

        ,(total_elapsed_time / execution_count)/1000  N'平均时间ms'

        ,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) N'执行语句'

FROM sys.dm_exec_query_stats AS qs

CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st

where 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) not like '%fetch%'

ORDER BY  total_elapsed_time / execution_count DESC;

执行结果:

Web站点性能优化经验分享

 2)数据库体检

SELECT A.NAME ,B.ROWS  

FROM sysobjects  A JOIN sysindexes B ON A.id = B.id 

WHERE A.xtype = 'U' AND B.indid IN(0,1) 

ORDER BY B.ROWS DESC , A.NAME

执行结果:

Web站点性能优化经验分享 

3)SQL Server活动监视器(监控数据库级别的CPU、内存、IO、耗时SQL语句):

Web站点性能优化经验分享

2、解决问题 

针对上面的2步,我们基本可以发现引起数据库性能的原因所在,所以我们对症下药:

1、数据库瘦身

     1)对于单表数据量较大的表,尽可能的做数据清理,历史数据如果可以不保留尽快备份出去

     2)将数据库表拆分到不同的库中,比如 tblMEMBER 就可以拆分到 DB1 与 DB2 中去

2、不要忘记索引(index)也不要滥用索引(index)

     索引是提高数据库效率的简单又高效的方法。只要是设置了数据库表(table),就不要忘记设置索引(index)。将索引设置在经常用于排序的字段上,其他字段就不要设置了。

     索引不是越多越好,也不是什么字段都适合建立索引的。数据重复性太多的字段不要设置索引。比如 tblMEMBER 的 iSex 字段只有 0 1 两个值,就不要设置索引。

3、适当使用存储过程(Stored Processing)

     存储过程(sp)已经被大大地宣传了,本文也不例外地赞许采用存储过程。本文的建议是只在下列情况才使用存储过程:一是一个业务处理是事务,包含了多个处理过程;二是一种处理被高频使用,使用存储过程可以提高效率;

4、避免使用视图(viewport)与关联

      视图viewport与关联都是为了程序员处理相对复杂的数据管理提供方便的手段。万物有其利,必有其弊。视图和关联提高了编程效率,都会较大地影响数据库的访问效率(事实上并不像一般资料说介绍的的那样高效),因此如果是web应用,则建议一般不要使用视图与关联。文章来源地址https://www.toymoban.com/news/detail-437987.html

到了这里,关于Web站点性能优化经验分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RDMA性能优化经验浅谈

    首先我们介绍一下RDMA的一些核心概念,当然了,我并不打算写他的API以及调用方式,我们更多关注这些基础概念背后的硬件执行方式和原理,对于这些原理的理解是能够写出高性能RDMA程序的关键。 Memory Region RDMA的网卡(下文以RNIC指代)通过DMA来读写系统内存,由于DMA只能根

    2024年02月10日
    浏览(41)
  • MySql优化经验分享

    我们怎么查看MySQL当前有多少个连接? 可以用show status命令,模糊匹配Thread, Show global status like \\\"Thread%\\\" show global variables like \\\'wait timeout\\\';—非交互式超时时间,如JDBC程序 show global variables like \\\'interactive timeout\\\';\\\"交互式超时时间,如数据库工具默认都是28800秒,8小时。 既然连接消

    2024年02月05日
    浏览(33)
  • Java 应用部署包优化经验分享

    背景 最近接手了一个 2018 年的老项目,因为太久远了,功能上的代码不敢乱动,虽然是老项目,但最近一年也在持续加功能,功能不稳定,于是我就进入了救火式改 Bug 的状态。 功能不能妄动,但是这个项目还有一个问题,打包模块打出的全量包部署不起来。拿到这个项目的

    2024年01月21日
    浏览(83)
  • MySQL性能优化的最佳20条经验

    关于数据库的性能,这并不只是DBA才需要担心的事。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。下面讲下MySQL性能优化的一些点。   大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是

    2024年02月05日
    浏览(33)
  • 架构师日记-从代码到设计的性能优化指南 | 京东云技术团队

    服务性能是指服务在特定条件下的响应速度、吞吐量和资源利用率等方面的表现。据统计,性能优化方面的精力投入,通常占软件开发周期的10%到25%左右,当然这和应用的性质和规模有关。性能对提高用户体验,保证系统可靠性,降低资源使用率,甚至增强市场竞争力等方面

    2024年02月05日
    浏览(65)
  • 极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队

    前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互,而前端框架的选择对于实现这些目标至关重要。然而,传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下,我们引入了 Qwik.js 框架。Qwik.js 不仅

    2024年02月05日
    浏览(42)
  • 实战经验:IIS网站服务器性能优化攻略

    Windows Server自带的互联网信息服务器(Internet Information Server,IIS)是架设网站服务器的常用工具,它是一个既简单而又麻烦的东西,新手都可以使用IIS架设一个像模像样的Web站点来,但配置、优化 IIS的性能,使得网站访问性能达到最优状态却不是一件简单的事情,这里我就介

    2024年01月19日
    浏览(63)
  • 深度学习调参经验:优化神经网络性能的关键八大步骤

    欢迎大家来到安静到无声的《模式识别与人工智能(程序与算法)》,如果对所写内容感兴趣请看模式识别与人工智能(程序与算法)系列讲解 - 总目录,同时这也可以作为大家学习的参考。欢迎订阅,请多多支持! 在深度学习中,

    2024年02月13日
    浏览(37)
  • 通用的改进遗传算法求解带约束的优化问题(MATLAB代码精讲、实际工程经验分享)

    在对多约束、非线性问题的求解上,传统线性规划等方法往往无法有效求解(求解时间过长、无法处理非线性约束等。 进化算法是一类强有力的工具,已经在多个领域有了较为成功的应用。然而,在利用遗传算法、粒子群等等进化算法求解实际的优化问题时,还存在许多困难

    2023年04月19日
    浏览(81)
  • 拼多多大模型团队招兵买马;披荆斩棘的AI博士们;淘宝双十一AIGC设计经验分享;亚马逊免费AI技能培训;Claude新版本支持200K token | ShowMeAI日报

    👀 日报周刊合集 | 🎡 生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! https://careers.pinduoduo.com/jobs 拼多多已经成立了一个数十人的大模型团队,团队位于上海。拼多多已经通过官网,以及其他招聘渠道,开始在大模型领域招兵买马,有关大模型职位的年薪百万不在少

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包