更好的优化服务器

最近总结了关于网站应用服务器性能优化的几个要点。

应用服务器的性能优化大体上可以从一下四个方向入手:

  1. 使用缓存
  2. 使用异步
  3. 进行服务器集群
  4. 进行代码优化

应用服务器性能优化(一)——缓存

一、使用缓存优化网站性能

网站性能优化第一定律:优化考虑使用缓存优化性能

缓存的本质是一个内存Hash表,网站应用中,数据缓存以一对Key,Value的形式存储在内存Hash表中。缓存主要用来存放那些读写比很高、很少变化的数据。

二八定律:80%的访问落在20%的数据上。

使用缓存需要注意的问题

  1. 把频繁修改的数据放入缓存。容易出现数据写入缓存后,应用还来不及读取缓存,数据就已经失效的情形,徒增系统负担。一般来说,数据的读写比在2:1以上,缓存才有意义。
  2. 没有热点的访问。 缓存使用的内存资源非常宝贵,只能将最新访问的数据缓存起来,而把历史数据清理出缓存。即缓存资源应该留给20%的热点数据。
  3. 数据不一致与脏读。 一般会对缓存设置失效时间,超过失效时间,就要从数据库重新加载。因此应用要忍受一定时间的数据不一致。另一种策略是数据更新时立即更新缓存,不过这也会带来更多的系统开销和事务一致性的问题。
  4. 缓存可用性。 业务发展到一定阶段时,缓存会承担大部分数据访问的压力,数据库已经习惯了有缓存的日子,所以当缓存服务器崩溃时,数据库会因为完全不能承受如此大的压力而宕机,进而导致整个网站不可用。这种情况被称作缓存雪崩,发生这种故障,甚至不能简单地重启缓存服务器和数据库服务器来恢复网站访问。 解决方式:1、缓存热备(当某台服务器宕机时,将缓存访问切换到热备服务器上。);2、缓存服务器集群
  5. 缓存预热。 缓存中存放的是热点数据,热点数据是缓存系统用LRU对不断访问的数据筛选出来的,这个过程需要较长的时间。新启动的缓存系统没有任何数据,此时系统的性能和数据库负载都不太好。因此可以选择在启动缓存是就把热点数据预加载好。
  6. 缓存穿透。 因为不恰当的业务或恶意攻击,持续高并发地访问某一个不存在的数据,如果缓存不保存该数据,就会有大量的请求压力落在数据库上。简单的解决方式是把请求的不存在的数据也放进缓存,其value是null。

二、分布式缓存

分布式缓存架构

分布式缓存有两种架构方式,一种是以JBoss Cache为代表的需要更新同步的分布式缓存,另一种是以Memchached为代表的不互相通信的分布式缓存。

asd

2017-09-23

1 个评论

  • 老郑先森 88 天前

    某程序员被一个妹子请去修宽带,那个破电脑怎么也修不好。

    这时妹子趴到好人的背上嗲声说道:“这个电脑不好修吧。要不咱们做点别的吧,要不多无聊。”

    他觉得自己的技术实力得到莫大的挑战和侮辱,咬牙拒绝道:“不,我肯定能修好!”