zoukankan      html  css  js  c++  java
  • 浅谈服务器压力解决方案

    优化服务器性能,从后往前说归根结底不外乎以前几种情况:

    1. 优化数据库
    2. 优化代码
    3. 使用静态数据

    下面就分别做下介绍。

    一、数据库优化

    1. 尽可能的使用SP,而不是让sql语句裸奔;
    2. 表结构设计要合理,起码要遵守三范式;
      数据库设计三范式:
      第一范式:原子性。表中不能套表
      第二范式:有主键
      第三范式:引用通过主键.
    3. 合理地设计索引,正确地使用索引;
    4. 对于超极大表(千万级别)最好采用分区表的方式存放,Oralce、SqlServer和Mysql都支持。

    二、业务代码优化

    1. 减少数据库往返,
      数据库连接是很重要且宝贵的资源,尽量避免没调用一次方法就读取一次数据库的情况,别小看这一条,我在项目就看到有同事在一个for循环中都次读取数据库。
      尤其避免绑定的时候都次执行存储过程;
    2. 合理正确的使用缓存,通过全局变量来保存一些设定,或是页面级缓存、站点级别缓存来减少服务器压力;
      如果是大内存服务器,我见过最大96G内存的服务器,可以把一些重要数据放在内存中,利用Nosql做成内存缓存,当然这是另一个话题了;
    3. 多用Ajax和客户端js、html代码,少用服务器控件,减少刷新和生成冗余的viewstate;
    4. 采用好的数据结构和算法;
      哈系类性能最好,查找的复杂度是O(1),例如Dictionary<K,V>
      二叉树查找复杂度O(logn),排序O(n*logn),List和ArrayList自带的排序速度接近O(n*logn),
      数组类的线性查找O(n),如果你用冒泡排序O(n*n),那么你不是优秀的程序员。
      StringBuilder 性能好于 string+=,不过提升的有限,不是本质的数量级别的提升。 
    5. 及时关闭非托管资源;
      除了上面提到的数据库connection,文件IO等也要注意。

    三、使用静态数据

    1. 使用静态数据也很重要,可以提升速度2个数量级(百倍),例如门户网站、大型网站的首页,引用由特定服务生成的静态数据(js、txt、html等)速度会很快;
    2. 图片、文件、数据服务器分流,可以提升1个数量级(十倍)
      web服务器1台或多台;
      图片服务器1台或多台;
      文件服务器1台或多台;
      数据库服务器1台或多台;
    3. CDN
  • 相关阅读:
    关于echarts图表在tab页中width:100%失效的问题
    easyui
    小程序中点击事件传参
    微信小程序实现滚动分页加载更多
    使用jquery如何获取现在时间、并且格式化
    只需两步获取任何微信小程序源码
    怎样修改已经审核通过发布成功的微信小程序
    小程序开发swiper如何实现点击图片自定义跳转
    微信小程序如何提交审核并发布?发布问题:小程序只支持https访问
    小程序填坑之路—读取用户信息、缓存其数据、读取其数据
  • 原文地址:https://www.cnblogs.com/fanyong/p/3346476.html
Copyright © 2011-2022 走看看