HoltYin

高并发处理及注意事项

高并发存在的问题

同时向服务器发起的请求过多,导致服务器或者数据库崩溃宕机

并发时,多个线程对相同资源进行访问,此时,线程安全问题出现可能出现,导致数据异常

高并发解决方法

面对第一种情况,可以分三个方面进行优化

1.nginx+负载均衡,分发请求到不同的服务器(一般这种方法是运维考虑的)
2.提高程序效率
    a.优化代码,减少程序执行时间,以减小单位时间内的并发数
    b.使用连接池,限制连接数
    c.优化代码中的SQL,减少与数据库交互的时间
    d.对于不需要实时同步的数据,可以多采用定时任务去同步
    f.不考虑线程安全的地方,可以考虑异步处理
3.优化数据库设计
    a.给经常需要查询的字段添加索引,提高查询效率(需要添加合适的索引,不恰当的索引有可能引起反效果,索引过多也会一定程度上降低更新或插入操作)
    b.分库分表(并发数很大,或者数据库表存储记录太多时)
    c.尽量使用正确存储数据的最小数据类型

面对地二种情况,可以分两个方面进行规避

1.在程序方面规避
    a.对多个线程可能同时请求的资源加锁。保证数据的一致性
    b.使用线程安全的数据结构
    c.单线程排队处理发往服务器的请求(不建议,速度太慢了)
    d.使用redis缓存数据(redis单线程,且处理速度快)redis解决高并发问题实例
2.在数据库方面规避
    a.特定场景下可以用加唯一索引的方式来保证线程安全。

暂时只想到这么多,后期想到其他方法会及时补充!

热评文章