- 假如生产环境出现CPU占用过高,如何分析思路和定位?
解决思路:先查占用CPU高的进程号---->然后查询占用CPU高的线程号---->最后查询是具体哪行代码出的问题。
一、使用top命令找出CPU占比最高的进程
二、使用 jps -l 或者 ps -ef | grep java | grep -v grep 命令,查出是哪个后台程序
三、通过 ps -mp 进程号 -o THREAD,tid,time 命令,定位到具体线程或者代码(参数解释:-m 显示所有线程,-p pid进程使用cpu的时间,-o 该参数后是用户自定义格式)
四、通过 “printf “%x\n” 线程号” 命令,将上面查询出来的线程号转换为16进制格式(并把英文改成小写格式)
五、通过 " jstack 进程ID | grep tid(16进制线程ID小写英文) -A40 " 命令,查出具体是哪行代码出的问题
上述问题答案参考博文:https://blog.csdn.net/mangomango123/article/details/114043755。
- 现在分库分表很常见,分库分表如何支持多条件的高效率检索?
这个问题换句话就是问分库分表时如何快速检索非分片键的数据。现有的解决方案有两种:一种是异构索引,举例就是订单按照订单号分库分表之后,创建用户ID和订单ID的关联表,该表通过用户ID来做分片键,数据异步更新(可以使用MQ或者订阅binlog);另一种就是利用ES构建宽表索引,通过异步(MQ或者binlog)去更新数据。
参考:https://blog.csdn.net/hanruikai/article/details/113859723。
- 谈谈Redis的ZSET
sortedSet(zset) 有序集合: 元素本身是无序不重复的,每个元素关联一个分数(score),可按分数排序,分数可重复。应用场景:由于可以按照分值排序,所以适用于各种排行榜。比如:点击排行榜、销量排行榜、关注排行榜等
- Redis哨兵的作用
文章评论
过了几篇大哥的文章。
总体不错。
提个建议:所有图形,尽量自己画出来,即使画不出来,也照着抄出来,不要直接粘贴别人的,图形比代码更有说服力。