云计算百科
云计算领域专业知识百科平台

服务器反应慢,秒杀设计

目录

服务器反应慢

线上服务器cup飙升,如果定位Java代码?

服务器变慢如何诊断处理?

线上接口负载剧增,快扛不住了,解决方法是什么?

秒杀设计

从全局角度如何设计一个秒杀系统

秒杀活动里遇到的问题

如何设计百万并发场景里的枪优惠券

如何设计春节抢红包的金额的算法。

如果设计订单超时自动取消

时间轮


服务器反应慢

线上服务器cup飙升,如果定位Java代码?

使用top命令找到CPU高的进程

使用SP-MP命令找到进程下CPU高的线程ID

printf命令把tid转换16进制数

使用jstack命令输出线程运行状态日志信息。

服务器变慢如何诊断处理?

CPU利用率

CPU利用率过高,说明服务器当前处理的指令比较多,当cup处理不过来的时候,指令执行效率就会下降,用户感觉程序处理变慢了。解决方法查看线上服务器cup飙升,如果定位Java代码。

CPU利用率过低,说明程序使用资源过低,可以增加线程数量提升程序性能。

磁盘io效率

程序运行过程里会直接或间接磁盘io操作,例如程序直接读写磁盘文件,或者依赖第三方组件对磁盘进程持久化存储,此时磁盘io效率就会对程序产生影响。

使用iostat命令查看,如果磁盘负载较高,可以针对性优化。例如,使用缓存减少io次数,使用顺序写代替随机写,减少寻址开销,使用mmap,减少内存拷贝次数

内存瓶颈

内存是一块临时存储数据的组件,所有CPU指令都需要在内存里读写,内存的合理使用减少程序和磁盘io的频率,减少网络io频率,提升io性能。

jvm对内存合理分配能够避免频繁的GC,当内存使用率高的时候,可以使用dump命令检查jvm内存,使用mat工具分析找出大对象,排查是否存在内存泄漏。如果堆内对象正常,可能是堆外内存被大量使用,这个时候使用pmap检查进程内存分配情况,如果CPU和内存使用正常,这时使用jstat查看cg日志,分析用户线程暂停时间,gc次数等指标.

线上接口负载剧增,快扛不住了,解决方法是什么?

增加缓存。因为增加缓存是解决系统性能问题的最快速,最高效的方案,他能够快速提升系统的吞吐量,但是需要修改源代码。零时的解决方案是增加节点,将程序部署到新的节点上,在流量入口增加限流和分发,但是增加节点会增加成本。

当接口负载扛不住的时候,可以优先增加缓存缓解负载压力,例如将读取频繁的数据写到缓冲区里,将动态页面静态化。如果压力还是很大,再增加限流策略,例如消息队列,如果压力过大,在考虑增加服务节点。

秒杀设计

从全局角度如何设计一个秒杀系统

秒杀是电商系统常见业务模式,为了吸引用户刺激消费而设计的一种促销活动。例如整点秒杀,单个商品秒杀。

特点,

1.瞬时流量大,秒杀活动结束后流量消失,所以不能用堆机器的方式提高QPS成本太高。QPS,quer

赞(0)
未经允许不得转载:网硕互联帮助中心 » 服务器反应慢,秒杀设计
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!