
生产问题
文章平均质量分 64
海里真的有鱼
每次发版,必把数据库搞炸了的程序员
展开
-
【系统响应慢排查所需命令】ps -ef、grep、jstat、pmap 、sort 、head 、jmap 、dump.hprof
假如是搜索功能缓慢,就用查看符合条件的进程【查询包含字符串“search”的进程】【ps -ef | grep search】jstat 这个命令主要是查看gc 、内存相关的信息【jstat -option】,以下是jstat 支持的选项。查看search 服务的gc情况【查询进程id 31665 的 gc 情况】【jstat -gc 31665】: 显示垃圾回收的统计信息,包括各个内存池的使用情况和垃圾回收的时间。状态的线程,并统计每个线程等待的锁的数量,输出前 10 个。原创 2024-08-08 09:41:11 · 964 阅读 · 0 评论 -
CPU飙升 怎么定位问题
【top】查看所有进程占系统CPU的排序,定位是哪个进程搞的鬼。PID那一列就是进程号。定位进程中使用 CPU 最高的线程tid线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a【jstack pid | grep tid 】找到线程堆栈,例如jstack 11763 | grep 0x2e6a -A 30查问题时,会要多次上面的操作以分析确定问题,这个过程。期望整合上面的过程成一个脚本,这样一行命令就可以自动化地搞定。原创 2024-08-14 14:41:54 · 1990 阅读 · 0 评论 -
java 线上生产问题排查思路-【jvm内存溢出】
栈内存可以分为虚拟机栈(VM Stack)和本地方法栈(Native Method Stack),除了它们分别用于执行Java方法(字节码)和本地方法,其余部分原理是类似的(以虚拟机栈为例说明)。如果递归的次数足够多,多到栈中栈帧所使用的内存超出了栈内存的最大容量,此时JVM就会抛出StackOverflowError。内存溢出指程序申请内存时,没有足够的内存供申请者使用。内存溢出就是你要的内存空间超过了系统实际能分配给你的空间,相当于此时系统没法满足你的需求,就会报内存溢出的错误。原创 2024-07-12 14:01:08 · 958 阅读 · 0 评论 -
大批量更新禁止for循环更新单个,要用批量更新
大批量操作可能会造成严重的主从延迟,特别是主从模式下,大批量操作可能会造成严重的主从延迟,因为需要 slave 从 master 的 binlog 中读取日志来进行数据同步。大批量写操作(UPDATE、DELETE、INSERT),需要分批多次进行操作。binlog 日志为 row 格式时会产生大量的日志。场景:65w条 for循环更新单个,出现了主从异常。原创 2024-07-08 13:46:05 · 516 阅读 · 0 评论 -
一张表数据量有几百万,新增一个字段要花一小时才执行结束,这一小时内影响点有哪些
在字段新增过程中,数据库可能会经历一定程度的性能下降,因为数据库引擎需要执行大量的写操作来更新表中的每一行数据。:在新增字段的过程中,数据库服务器的 CPU、内存和磁盘等资源可能会被大量使用,导致系统负载增加。:在更新过程中,如果出现错误或中断,可能会导致数据不一致的情况。:如果应用程序依赖于新增字段的数据,那么在字段新增期间,应用程序可能无法正常工作或会收到不完整或错误的数据。为了减少这些影响,您可以考虑在系统负载较低的时段执行这样的操作,或者在操作之前做好充分的备份和准备工作。原创 2024-07-05 16:06:07 · 626 阅读 · 0 评论