网站优化性能 Linq处理list数据 多线程ManualResetEvent、等待所有线程 Mysql语句的优化 Mysql查看binlog日志 MemCache缓存和C#自带的Cache缓存 C# 队列(Queue)解决简单并发

1、网站

  对于不常更新的网页,使用静态页,使用 cdn 加速。

  Linq可以减少数据库的压力,可以适当使用Linq来筛选数据。详见 Linq处理list数据

  特定场景可以适当使用多线程,来保证代码尽快的跑完,节省时间。详见 多线程ManualResetEvent、等待所有线程

2、数据库(sql)

  关于 sql 方面的优化,详见 Mysql语句的优化

  合理利用 mysql 的 binlog 日志,利用增删改的 sql 记录,确定问题发生原因。Mysql查看binlog日志

  关于主从同步,如果使用主从同步,需要极短时间确认数据存在的,一定要查询主库,因为主从同步有延迟。

3、网络请求

  压缩图片、js,合并js,图片有个延迟加载

4、缓存(memcache、redis)

  缓存可以有效的降低数据库的压力,对于一些不常更新,大量用户使用的数据,可以放进缓存中,保证查询速度。详见 MemCache缓存和C#自带的Cache缓存

5、并发

  分析:同一时间大量请求,导致服务响应慢,请求处理不过来,然后导致后面的请求排队。

  优化思路:当请求来的时候,存进队列里,及时返回,断开请求。然后从队列中拿数据,进行业务逻辑处理。

  优化思路:排队!利用队列(可以替换成 redis)存储请求的参数,然后及时断开连接,保证其他请求可以及时进入。同时触发处理队列的方法。详见 C# 队列(Queue)解决简单并发

  我们以小米手机为例,假如今天需要抢购的手机有100台,有10000个人去抢,但是这10000个人会多开网页去抢够,还有可能找好多朋友一起帮忙抢,还有一部分的人可能会有脚本。

  处理方法就是使用分布式异步队列。我们把所有的请求都存储到队列中,同时用户进到等待页面,让他去排队。我们安排一个处理队列的方法,不停的去队列中拿数据,然后确认是否有购买手机的权限。直到确定100个可以购买的用户,然后我们更新数据库的值。用户等待的页面会不停的发起请求,来确认手机手否卖完。直到获取到,然后将已售馨告诉用户。结束抢购。

猜你喜欢

转载自www.cnblogs.com/cang12138/p/9778121.html