MySQL无cpu卡死故障深入分析

MySQL卡死问题排查与优化实战指南 数据库性能优化是保障系统稳定运行的关键技术,其中锁机制和I/O调度是核心原理。MySQL作为最流行的关系型数据库,其卡死问题往往源于锁冲突或资源耗尽,通过系统化排查可以避免数据丢失风险。工程实践中,需要结合慢查询分析、InnoDB状态监控等工具定位问题,常见于高并发交易、报表生成等场景。本文提供的七步排查法覆盖从系统资源检查到存储引擎验证的全流程,特别适合电商大促、金融交易等对数据库稳定性要求高的应用场景。 阅读详情

版本:

percona MySQL 5.6.45 版本。

现象

Master库无监控数据,无法建立连接,mysqld进程不占cpu。外部手段无法获得得到更多信息,且这个实例数次出现该情况,通过kill掉重启恢复,这次出现后将业务流量切走保留了现场,该环境可以自由操作,运维同学希望能定位到根本原因,以后尽量避免此类问题。

初步分析

简单测试了下机器IO,观察了cpu、内存等信息,看了下数据文件,binlog文件,除了binlog文件偶有大文件外,其它正常。在实例机器本地登陆也会卡住,显然存在死锁,而且是连接建立就会用到的锁被其它线程占用没释放,因此无法登陆,该死锁非innodb的死锁,往往程序逻辑预期外的死锁,一般是代码逻辑bug导致。

深入解剖

当外部手段无法分析数据库状态时,打印数据库进程堆栈,下载对应版本MySQL源码结合分析每个线程上下文,可以作为最后的手段。找到其中关键线程:Thread 59,Thread 70,Thread 71,Thread 74,Thread 76,具体堆栈信息内容如下:

Thread 59 (Thread 0x7f53445a6700 (LWP 446644)):
#0  0x00007f5c3369b4ed in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x00007f5c3369dcdc in _L_cond_lock_847 () from /lib64/libpthread.so.0
#2  0x00007f5c3369db71 in __pthread_mutex_cond_lock () from /lib64/libpthread.so.0
#3  0x00007f5c33698de4 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#4  0x00000000008ca3c0 in inline_mysql_cond_timedwait (src_file=0xd3a698 "/root/percona-server-5.6.45-86.1/sql/binlog.cc", src_line=6551, abstime=0x7f53445a4390, mutex=0x13f5288 <mysql_bin_log+8>, that=0x13f57c8 <mysql_bin_log+1352>) at /root/percona-server-5.6.45-86.1/include/mysql/psi/mysql_thread.h:1199
#5  MYSQL_BIN_LOG::wait_for_update_bin_log (this=0x13f5280 <mysql_bin_log>, thd=thd@entry=0x438b410, timeout=timeout@entry=0x7f53445a4390) at /root/percona-server-5.6.45-86.1/sql/binlog.cc:6551
#6  0x00000000008dcd93 in mysql_binlog_send (thd=thd@entry=0x438b410, log_ident=0x7f52a4000bd0 "mysql-bin.000289", pos=15336, slave_gtid_executed=slave_gtid_executed@entry=0x0, flags=flags@entry=2) at /root/percona-server-5.6.45-86.1/sql/rpl_master.cc:1748
#7  0x00000000008dd7c7 in com_binlog_dump (thd=thd@entry=0x438b410, packet=packet@entry=0x438f1d1 "", packet_length=packet_length@entry=26) at /root/percona-server-5.6.45-86.1/sql/rpl_master.cc:765
#8  0x0000000000710907 in dispatch_command (command=COM_BINLOG_DUMP, thd=0x438b410, packet=0x438f1d1 "", packet_length=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1739
#9  0x0000000000712b41 in do_command (thd=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1093
#10 0x00000000006d764d in do_handle_one_connection (thd_arg=thd_arg@entry=0x438b410) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1588
#11 0x00000000006d7699 in handle_one_connection (arg=arg@entry=0x438b410) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1492
#12 0x000000000095c9c3 in pfs_spawn_thread (arg=0x4393600) at /root/percona-server-5.6.45-86.1/storage/perfschema/pfs.cc:1861
#13 0x00007f5c33694dd5 in start_thread () from /lib64/libpthread.so.0
#14 0x00007f5c3235a02d in clone () from /lib64/libc.so.6

Thread 70 (Thread 0x7f534487c700 (LWP 446632)):
#0  0x00007f5c3369b4ed in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x00007f5c33696dcb in _L_lock_883 () from /lib64/libpthread.so.0
#2  0x00007f5c33696c98 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3  0x00000000006ce4d8 in inline_mysql_mutex_lock (src_file=0xcb0c40 "/root/percona-server-5.6.45-86.1/sql/sql_class.cc", src_line=2031, that=0x13f5288 <mysql_bin_log+8>) at /root/percona-server-5.6.45-86.1/include/mysql/psi/mysql_thread.h:690
#4  THD::awake (this=this@entry=0x4317f20, state_to_set=state_to_set@entry=THD::KILL_QUERY) at /root/percona-server-5.6.45-86.1/sql/sql_class.cc:2031
#5  0x00000000008dd4c3 in kill_zombie_dump_threads (thd=thd@entry=0x436a2b0) at /root/percona-server-5.6.45-86.1/sql/rpl_master.cc:2228
#6  0x00000000008dd786 in com_binlog_dump (thd=thd@entry=0x436a2b0, packet=packet@entry=0x4313241 "\350;", packet_length=packet_length@entry=26) at /root/percona-server-5.6.45-86.1/sql/rpl_master.cc:761
#7  0x0000000000710907 in dispatch_command (command=COM_BINLOG_DUMP, thd=0x436a2b0, packet=0x4313241 "\350;", packet_length=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1739
#8  0x0000000000712b41 in do_command (thd=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1093
#9  0x00000000006d764d in do_handle_one_connection (thd_arg=thd_arg@entry=0x4330830) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1588
#10 0x00000000006d7699 in handle_one_connection (arg=arg@entry=0x4330830) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1492
#11 0x000000000095c9c3 in pfs_spawn_thread (arg=0x430aa20) at /root/percona-server-5.6.45-86.1/storage/perfschema/pfs.cc:1861
#12 0x00007f5c33694dd5 in start_thread () from /lib64/libpthread.so.0
#13 0x00007f5c3235a02d in clone () from /lib64/libc.so.6

Thread 71 (Thread 0x7f53448be700 (LWP 446631)):
#0  0x00007f5c3369b4ed in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x00007f5c33696e01 in _L_lock_1093 () from /lib64/libpthread.so.0
#2  0x00007f5c33696da2 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3  0x0000000000744b22 in inline_mysql_mutex_lock (src_file=0xcbd9d0 "/root/percona-server-5.6.45-86.1/sql/sql_show.cc", src_line=3117, that=<optimized out>) at /root/percona-server-5.6.45-86.1/include/mysql/psi/mysql_thread.h:690
#4  calc_sum_of_all_status (to=to@entry=0x7f53448bbdc0) at /root/percona-server-5.6.45-86.1/sql/sql_show.cc:3117
#5  0x0000000000745eba in fill_status (thd=thd@entry=0x4329070, tables=tables@entry=0x7f52f0005130, cond=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_show.cc:7394
#6  0x000000000074c5da in do_fill_table (join_table=0x7f52f00067b8, table_list=0x7f52f0005130, thd=0x4329070) at /root/percona-server-5.6.45-86.1/sql/sql_show.cc:8065
#7  get_schema_tables_result (join=join@entry=0x7f52f0005a90, executed_place=executed_place@entry=PROCESSED_BY_JOIN_EXEC) at /root/percona-server-5.6.45-86.1/sql/sql_show.cc:8166
#8  0x000000000072d0c5 in JOIN::prepare_result (this=this@entry=0x7f52f0005a90, columns_list=columns_list@entry=0x7f53448bc590) at /root/percona-server-5.6.45-86.1/sql/sql_select.cc:823
#9  0x00000000006e3851 in JOIN::exec (this=0x7f52f0005a90) at /root/percona-server-5.6.45-86.1/sql/sql_executor.cc:116
#10 0x000000000072d6d5 in mysql_execute_select (free_join=true, select_lex=0x432b928, thd=0x4329070) at /root/percona-server-5.6.45-86.1/sql/sql_select.cc:1101
#11 mysql_select (thd=thd@entry=0x4329070, tables=0x7f52f0005130, wild_num=0, fields=..., conds=0x0, order=order@entry=0x432baf0, group=group@entry=0x432ba28, having=0x0, select_options=2684619520, result=result@entry=0x7f52f0005a68, unit=unit@entry=0x432b2e0, select_lex=select_lex@entry=0x432b928) at /root/percona-server-5.6.45-86.1/sql/sql_select.cc:1222
#12 0x000000000072dfe5 in handle_select (thd=thd@entry=0x4329070, result=result@entry=0x7f52f0005a68, setup_tables_done_option=setup_tables_done_option@entry=0) at /root/percona-server-5.6.45-86.1/sql/sql_select.cc:110
#13 0x000000000057a1ab in execute_sqlcom_select (thd=thd@entry=0x4329070, all_tables=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:5780
#14 0x000000000070b53e in mysql_execute_command (thd=thd@entry=0x4329070) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:3058
#15 0x000000000070f568 in mysql_parse (thd=thd@entry=0x4329070, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x7f53448bd650, update_userstat=update_userstat@entry=false) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:7062
#16 0x0000000000710b74 in dispatch_command (command=<optimized out>, thd=0x4329070, packet=0x432c821 "show global status like 'Uptime'", packet_length=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1524
#17 0x0000000000712b41 in do_command (thd=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1093
#18 0x00000000006d764d in do_handle_one_connection (thd_arg=thd_arg@entry=0x4329070) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1588
#19 0x00000000006d7699 in handle_one_connection (arg=arg@entry=0x4329070) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1492
#20 0x000000000095c9c3 in pfs_spawn_thread (arg=0x4328d70) at /root/percona-server-5.6.45-86.1/storage/perfschema/pfs.cc:1861
#21 0x00007f5c33694dd5 in start_thread () from /lib64/libpthread.so.0
#22 0x00007f5c3235a02d in clone () from /lib64/libc.so.6

Thread 74 (Thread 0x7f5344984700 (LWP 446628)):
#0  0x00007f5c3369b4ed in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x00007f5c33696e01 in _L_lock_1093 () from /lib64/libpthread.so.0
#2  0x00007f5c33696da2 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3  0x00000000008cd3ca in inline_mysql_mutex_lock (src_file=0xd3a698 "/root/percona-server-5.6.45-86.1/sql/binlog.cc", src_line=8038, that=<optimized out>) at /root/percona-server-5.6.45-86.1/include/mysql/psi/mysql_thread.h:690
#4  MYSQL_BIN_LOG::publish_coordinates_for_global_status (this=0x13f5280 <mysql_bin_log>) at /root/percona-server-5.6.45-86.1/sql/binlog.cc:8038
#5  0x00000000008d253c in MYSQL_BIN_LOG::ordered_commit (this=this@entry=0x13f5280 <mysql_bin_log>, thd=thd@entry=0x42fe510, all=all@entry=false, skip_commit=skip_commit@entry=false) at /root/percona-server-5.6.45-86.1/sql/binlog.cc:7777
#6  0x00000000008d2df4 in MYSQL_BIN_LOG::commit (this=0x13f5280 <mysql_bin_log>, thd=0x42fe510, all=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/binlog.cc:7086
#7  0x00000000005b6ad0 in ha_commit_trans (thd=thd@entry=0x42fe510, all=all@entry=false, ignore_global_read_lock=ignore_global_read_lock@entry=false) at /root/percona-server-5.6.45-86.1/sql/handler.cc:1512
#8  0x000000000079bd39 in trans_commit_stmt (thd=thd@entry=0x42fe510) at /root/percona-server-5.6.45-86.1/sql/transaction.cc:436
#9  0x000000000070bb6b in mysql_execute_command (thd=thd@entry=0x42fe510) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:5676
#10 0x000000000070f568 in mysql_parse (thd=thd@entry=0x42fe510, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x7f5344983650, update_userstat=update_userstat@entry=false) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:7062
#11 0x0000000000710b74 in dispatch_command (command=<optimized out>, thd=0x42fe510, packet=0x42fa0a1 "", packet_length=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1524
#12 0x0000000000712b41 in do_command (thd=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1093
#13 0x00000000006d764d in do_handle_one_connection (thd_arg=thd_arg@entry=0x430f670) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1588
#14 0x00000000006d7699 in handle_one_connection (arg=arg@entry=0x430f670) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1492
#15 0x000000000095c9c3 in pfs_spawn_thread (arg=0x4317c20) at /root/percona-server-5.6.45-86.1/storage/perfschema/pfs.cc:1861
#16 0x00007f5c33694dd5 in start_thread () from /lib64/libpthread.so.0
#17 0x00007f5c3235a02d in clone () from /lib64/libc.so.6



Thread 76 (Thread 0x7f5bdc0a5700 (LWP 446626)):
#0  0x00007f5c3369b4ed in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x00007f5c33696e01 in _L_lock_1093 () from /lib64/libpthread.so.0
#2  0x00007f5c33696da2 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3  0x00000000008dd6a3 in inline_mysql_mutex_lock (src_line=2195, src_file=0xd3e600 "/root/percona-server-5.6.45-86.1/sql/rpl_master.cc", that=0x4318f18) at /root/percona-server-5.6.45-86.1/include/mysql/psi/mysql_thread.h:690
#4  kill_zombie_dump_threads (thd=thd@entry=0x44fc760) at /root/percona-server-5.6.45-86.1/sql/rpl_master.cc:2195
#5  0x00000000008dd786 in com_binlog_dump (thd=thd@entry=0x44fc760, packet=packet@entry=0x44fff11 "\350;", packet_length=packet_length@entry=26) at /root/percona-server-5.6.45-86.1/sql/rpl_master.cc:761
#6  0x0000000000710907 in dispatch_command (command=COM_BINLOG_DUMP, thd=0x44fc760, packet=0x44fff11 "\350;", packet_length=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1739
#7  0x0000000000712b41 in do_command (thd=<optimized out>) at /root/percona-server-5.6.45-86.1/sql/sql_parse.cc:1093
#8  0x00000000006d764d in do_handle_one_connection (thd_arg=thd_arg@entry=0x42fe510) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1588
#9  0x00000000006d7699 in handle_one_connection (arg=arg@entry=0x42fe510) at /root/percona-server-5.6.45-86.1/sql/sql_connect.cc:1492
#10 0x000000000095c9c3 in pfs_spawn_thread (arg=0x4306ac0) at /root/percona-server-5.6.45-86.1/storage/perfschema/pfs.cc:1861
#11 0x00007f5c33694dd5 in start_thread () from /lib64/libpthread.so.0
#12 0x00007f5c3235a02d in clone () from /lib64/libc.so.6

各个线程正在进行任务分析:

Thread 59 为binlog_send线程,在等LOCK_log锁。send_binlog(binlog_dump)线程要发送binlog,需要等74号线程完成后发送的信号量唤醒,或者等信量超时自己唤醒,但是线程间信号同步机制要求不管种方式唤醒都必须加上LOCK_log锁,如下图,此时它在等74号线程结束。

Thread 70 在做kill binlog_dump连接动作,已经持有 LOCK_thd_data锁,并通知目标线程关闭,等待目标线程的关闭中。

Thread 71 在做show status动作,持有 LOCK_status锁,在等LOCK_thread_count锁。但它要读status信息所以加了LOCK_status锁,而又要统计连接数,因此要加LOCK_thread_count锁。

Thread 74在做commit 动作,持有 LOCK_log锁,在等 LOCK_status锁。 执行commit时因为要生成binlog,会一直持有LOCK_log锁,直到binlog生成完成通过信号量唤醒其它等待线程再放锁,如果单个事务生成的Binlog很多,比方说有大事务,那这个锁持有时间会很长。因为在写完binlog后还要更新status时,所以需要加LOCK_status锁,在此时LOCK_log并未放锁。74号线程持有 LOCK_log等LOCK_status锁。关键代码逻辑如下图:

Thread 76也在做kill binlog_dump连接动作,持有 LOCK_thread_count 锁,在等要kill的目标线程的LOCK_thd_data锁。

这里的70和76线程是binlog同步线程被多次发起关闭的两个不同阶段,如下图所示:

76号线程加了LOCK_thread_count 锁,要加的锁被70号线程持有了,70号线程在等59号binlog send线程自己关闭,59号要等74号的LOCK_log锁,74号在等71号的LOCK_status锁,71号的在等76号的LOCK_thread_count 锁,死锁链形成,76->70->59->74->71->76,五个线程之间的相爱相杀,导致无法自我恢复,完全hang死,全部在做lock_wait,几乎不占cpu。

诱因分析

表面看,死锁发生就是事务提交正生成binlog写文件时,刚好有连接在做show status动作,又刚好被两次以上触发关闭Send binlog线程,又刚好有一个要关闭的复制线程在等待中,互相等待,无法恢复。好像需要非常多的巧合,应该很难发生,但实际上出现的次数并不少。

在该实例上,大事务比较多,经常有几G甚至几十G的大事务,那么生成这个事务的binlog文件时间会达到几十秒甚至几分钟,这个过程中会一直拿LOCK_log锁,send binlog线程会一直等这个锁,当然这时是整体是正常状态。如果有show global status语句过来,也能顺利执行完,没有线程拿它的锁,数据库后台依旧正常。紧接着如果这时有关闭binlog dump线程的指令过来,第一个线程会等在目标线程关闭代码处,第二个关闭binlog dump线程指令会等在第一个关闭指令自己拿的锁处,但此时仍然可以恢复,只要大事务完成写binlog,释放LOCK_log锁,第一个关闭binlog dump线程指令能正常完成,第二个关闭binlog dump线程也能正常跑完,重建binlog dump线程,开始发送binlog到备机。但是,当第二个关闭binlog dump线程没跑完时,此时若来一个show global status语句,那么死锁环就触发了。在这种情况下,只要事务足够大,生成binlog文件时间长,一直持有LOCK_log锁不放,有show global status语句,又有多次关闭binlog dump线程指令,这种死锁就容易发生。

根因深挖

大事务由业务产生,当大事务在SSD盘上生成几个G到几十G的binlog文件往往几秒到几分钟,那么最后生成binlog文件时就一定会持续占LOCK_log锁直到写完。

show global status语句为监控采集语句,我们15秒一次,这是正常语句。

send binlog线程等待锁也正常流程,5.6上操作同个binlog文件会受LOCK_log互斥,读时不能写,写时不能读,这是内部逻辑。

关闭binlog dump线程这不是一个常见操作,Master上的关闭操作是由slave发起,当备机上有stop slave时,会发指令到master上时会调用kill binlog_dump指令来关闭,但是该实例出现卡死时并没有人发起stop salve命令,那这个指令是从何而来呢?当slave机超过心跳时间,没有收到master的任何binlog或者心跳时,salve会尝试重建主从,此时就会发kill指令再重建。

而Master在生成大事务时,send线程一直在等待,即不能发送binlog也不能发心跳到备机,备机等待超过心跳时间未收到主机任何信息便会重建主从,这个心跳时间为 slave_net_timeout 参数值的一半,默认值为3600秒,即心跳默认时间为1800秒,按这个默认值设置的时间,即使hdd盘也能写上百G文件,几乎不会因为写一个binlog事务一直占锁到超过心跳时间情况。

查看slave主从建立信息发现参数slave_net_timeout 设置为4秒,也就是心跳为时间2秒,那么只要2秒未收到master上的binlog或心跳,slave就会通知master重建主从,然后Master会kill复制链接,然后在这一系巧合叠加下最终导致该问题。

优化方向

运维层面:

业务逻辑调整,减少事务大小,MySQL对大事务不友好,可能会导致很多问题。

调大slave_net_timeout 的值,使其心跳时间变长,在有大事务的业务中不至于频繁重建主从。

内核层面:

从上面可以看出,LOCK_log锁是关键点,这个锁是保护binlog的,不管是写binlog,还是要发送binlog都需要加这个锁,也就是说读写是冲突的。而在一主多从架构中,会有多个读binlog的线程,会加剧这个锁冲突,这里是否可以在代码架构上改进优化呢?显然是可以的。这是一个典型的生产者和消费者模型,完全可以做到读写不冲突,只要维护一个binlog位点就可以,只要读的位置不超过已经写完的binlog位点就不会有问题,完全没必要读写互斥,当然官方也意识到这个问题,在5.7版本上已经做了这个优化重构了,逻辑见下面代码图:

5.7版本更新维护的是位点,不再是文件级别锁,读写不再互斥,升级到5.7版本也可以避免该问题。

最后,还有一个小问题,为什么登陆时会卡住无反应呢?原因也很简单,新建连接需要加LOCK_thread_count 锁,这个锁已经无法获得了,逻辑见下面代码图:

小结

本案例中,大事务是关键诱因,对于大事务,即使MySQL现在已经进化到了8.0,依旧容易引发问题。TP业务应该尽可能让事务变小,小事务高并发,MySQL数据库在整个业务体系中重存储轻计算,复杂的业务逻辑尽在上层实现,或者尽量简化再到数据库。

Linux服务器CPU卡死?手把手教你排查NMI watchdog软死锁问题 本文详细解析了Linux服务器CPU软死锁问题,特别是NMI watchdog触发的`kernel: BUG: soft lockup`错误。通过实战案例和高级工具链(如perf、kdump、bpftrace)的使用技巧,帮助运维人员快速定位和解决CPU卡死问题,并提供从紧急修复到长期预防的完整解决方案。 阅读详情

相关推荐

Oracle数据库实例卡死分析与解决方案

在遇到数据库实例卡死的情况时,可以通过查看数据库状态、分析数据库卡死的原因,并采取相应的解决措施来恢复数据库的正常运行。同时,为了避免数据库实例卡死的情况发生,建议合理规划数据库资源、优化查询语句,并定期进行数据库性能监控和调优工作。在数据库管理中,有时候会遇到Oracle数据库实例卡死的情况,这种情况会导致数据库无法正常响应请求,从而影响业务的正常运行。当数据库中的某个会话持有锁,并且其他会话需要等待该锁释放时,可能会导致数据库实例卡死。当遇到数据库实例卡死的情况时,首先需要确认数据库的状态。

ZaxfSass的博客 2008

Mysql卡死,执行sql报错,lock wait timeout,死锁

【代码】Mysql卡死,执行sql报错,lock wait timeout,死锁。

qq_28597013的博客 1383

树莓派烧录验证失败:跳过验证步骤实现成功启动的实用技巧

本文针对树莓派烧录系统时常见的验证失败问题,提供了跳过验证步骤实现成功启动的实用技巧。通过分析Windows与Linux文件系统差异导致的SD卡验证报错,指导用户在烧录完成后立即关闭验证窗口,或使用BalenaEtcher等第三方工具规避问题,确保树莓派正常启动。

yyy34的博客 949

使用ADO+MySQL时经常出现的错误分析及总结

环境: Windows XP SP2 、Delphi 7、MyODBC 3.51问题:在ODBC中配置MySQL数据源(如Hydro)完全正常,但是在D7中1,使用ADOConnection有问题。在配置其ConnectionString时,如果选择了数据源Hydro,在初始数据库下拉框中也能够看到可选的数据库,但是如果选中每个数据库后,按“测试”按钮无法成功!可是如果不选具体数据库就可以

zhourongbiao的专栏 1934

OpenBmc开发2:构建开发环境

编译环境VMware + ubuntu 18.04 编译环境构建:参考OpenBmc开发1:构建开发环境 1、打开一个Ternimal,进入openbmc目录下 2、查看有哪些不同的编译配置 find meta-* -name local.conf.sample 可以看到如下编译配置 3、生成编译配置 插入TEMPLATECONF,上边查询到的配置有很多,但是有一些...

master 2万+

一种基于因果干预的少样本学习的故障诊断模型

本文提出CIRNet,一种融合元学习与因果干预的少样本故障诊断框架。针对传统方法易学习伪相关特征的问题,CIRNet通过构建结构因果模型,采用类级和特征级双调整策略消除先验知识干扰。实验在多个轴承/齿轮数据集上验证其有效性,在跨组件任务中准确率最高达93.41%,特征可视化显示更好的类可分性。相比现有方法,CIRNet显著提升了模型泛化能力和可解释性。

hasakie的博客 957

MySQL死锁和卡死分析

MySQL死锁和卡死分析(工作中的实战,可以好好看看) 1.问题现象: CMS任务查询,因为任务关联了很多不同类型的对象比如filedocument xmldocument part等等。所以这些任务关联的对象我是建了一个视图来存放所有的能被任务关联的对象。这样的话就造成了视图汇总了十多张表的数据,然后任务查询的sql又用了union和left join来将视图和其他几张表来进行级联查询。这就导致了几个问题,一是查询的时间非常的长,二是sql非常复杂数据量很大的情况下很耗性能,三是并发查询的时候可能会造.

yb创作中心 3333

Modelsim10.5_se安装(Win11)

modelsim是Mentor公司开发的优秀的HDL语言仿真软件。它能提供友好的仿真环境,采用单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术和单一内核仿真技术,编译仿真速度快且编译的代码与平台无关。

m0_51186267的博客 9925

记一次线上mysql数据库卡死,排查修复过程

数据库执行show full PROCESSLIST,发现大量的表锁,由于是线上环境,网站服务没有关,有很多查询干扰。(7)优化代码逻辑,对分页的后续数据进行限制,根据网站的业务分析,大概率是网站被爬虫给爬了,正常人谁往百万数据后翻页呀。1.关闭服务器上其他服务,尝试访问,访问速度变快,以为是其他的服务影响,其实是假象。(8)重新上线,重启数据更新服务,恢复正常。

weixin_41599103的博客 1059

FPGA/IC 秋招笔试/面试题总结(目录)

FPGA/IC 秋招笔试/面试题总结-目录介绍 文章目录FPGA/IC 秋招笔试/面试题总结-目录介绍一、FPGA内部资源1. 什么是FPGA2.FPGA内部资源二、同步时钟、同步/异步电路1.同步时钟2.同步/异步电路三、同步复位/异步复位1.同步复位2. 异步复位3. 异步复位同步释放四、同步FIFO/异步FIFO1.同步FIFO2.异步FIFO五、FIFO最小深度计算1.FIFO最小深度2.示例分析六、逻辑电平1.TTL电平标准2.LVTTL电平标准3.CMOS电平标准4.LVCOMS电平标准5.RS

Crazzy_M的博客 2万+

探索数据库领域 SQL 的 JSON 数据处理技巧

在当今数字化时代,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于各种领域,如 Web 应用、移动应用、大数据处理等。数据库作为数据存储和管理的核心,需要具备处理 JSON 数据的能力。本文章的目的在于深入探索 SQL 语言在数据库中处理 JSON 数据的技巧,涵盖从基础的 JSON 数据查询到复杂的 JSON 数据操作,帮助读者全面了解和掌握 SQL 处理 JSON 数据的方法。

2502_91592937的博客 925

MySQL占用系统进程,MySQL服务进程占用系统CPU达100%

MySQL服务进程占用系统CPU达100%MySQL服务进程占用系统CPU达100%故障现象:ping云主机严重丢包,丢包率达99%,仅有一两个包可到达;更无法远程;排查:云主机 CentOS6.4 后台查看CPU占用高达99% 还好能登入系统,操作也并不卡顿;top查看 mysql服务进程占用CPU达100%如图:两分钟后,系统卡死;(若是系统没有卡死的话还可以经确认后重启mysql服务,以结束...

weixin_30952319的博客 401

《ESP32单片机基础入门》第2章:开发环境搭建

【代码】《ESP32单片机基础入门》第2章:开发环境搭建。

2301_79143213的博客 582

网站服务器 MySQL 高 CPU 占用故障

摘要:Linux服务器上PHP+MySQL架构的网站突发CPU 100%占用问题,表现为页面加载卡顿。根因是WordPress元数据查询SQL中IN列表包含数百个ID且强制排序,导致MySQL无法使用索引而手动排序,引发CPU雪崩。故障触发点是Memcached缓存失效后热点SQL请求直接冲击数据库。临时解决方案包括终止慢查询、重启缓存服务;最终方案是改用Redis缓存并安装Redis插件。建议避免频繁修改SSL证书,防止缓存失效引发连锁反应。(149字)

chen_02_darling的博客 582

手把手教你学Simulink——基于Simulink的固态变压器(SST)多级协同控制

摘要:本文详细介绍了基于Simulink的固态变压器(SST)多级协同控制方法。SST作为新一代智能电网核心设备,通过AC-DC整流、DC-DC隔离和DC-AC逆变三级架构实现电能高效转换。针对多级耦合难题,提出能量-功率协同控制策略:纵向解耦电压环与功率前馈,横向联动级间功率指令。在Simulink中搭建10kV/400V系统模型,实现直流母线电压波动<2%的动态性能。特别设计了负载突变时的三级协同机制,通过虚拟惯性算法和前馈控制实现快速响应。文章包含完整的建模步骤、控制推导和参数设置,为电力电子工

MHD0815的博客 197

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

线上MySQL突然卡死,排查的黄金5分钟

从一次"凌晨2点CEO在群里@所有人"的紧急故障出发,系统性总结MySQL应急排查的完整SOP。通过5分钟分步骤排查流程、6大常见故障场景的真实案例、以及紧急处理手段的决策树,揭秘如何快速定位死锁、慢查询、连接数爆满、磁盘空间满等问题。配合时序图展示排查流程,给出可直接执行的排查命令和应急处理脚本。

比较是偷走幸福的小偷 4475

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

故障复盘-MySQL的time_zone未正确配置导致现网CPU飙升

MYSQL5.7 time_zone未正常配置导致,TIMESTAMP导致数据库CPU飙升。

shaohjz的博客 600

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySQL故障排查与优化

连接不上 / 慢 / 卡死 / CPU 100% / 磁盘满 / 锁等待binlogsqlsqlsql。

W108282的博客 314

mysql cpu 1000_MySQL CPU 彪高到百分之 1000 的排查思路

MySQL CPU 彪高到百分之 1000 的排查思路查看当前 MySQL 的 CPU 已经在百分之 1019下述为当前 MySQL 的所以子线程的 CPU 使用状况, 可以看到当前已经有 11 个线程的 CPU 都是在 99% 左右进行问题的排查:1, 首先怀疑是否是存在较大的全盘扫描的 SQL 语句, 导致 MySQL 查询时间过长导致的 CPU 彪高现象2, 查询当前 MySQL 的 my....

weixin_33290540的博客 221

mysql cpu 1000_MySql CPU彪高到百分之1000的排查思路

MySql CPU彪高到百分之1000的排查思路查看当前MySql的CPU已经在百分之 1019下述为当前MySql的所以子线程的CPU使用状况,可以看到当前已经有11个线程的CPU都是在99%左右进行问题的排查:1、首先怀疑是否是存在较大的全盘扫描的SQL语句,导致MySql查询时间过长导致的CPU彪高现象2、查询当前MySql的my.cnf配置,是否是MySql配置问题(由于我司运维同学有一个...

weixin_39615984的博客 127

故障分析 | 执行sed命令卡死CPU消耗100%一例分析

1、注释符号和汉字之间养成使用空格分隔习惯。2、一些低版本工具在某些特殊情况下可能会触发bug,仔细分析及比对,总会找到问题根源。本文关键字:#sed# #cpu# #字符集#

ActionTech的博客 1107

压测导致mysql数据库CPU很高_mysql数据库cpu飙升800%,如何故障定位及优化?

mysql数据库cpu飙升800%,基本上就两种原因:访问量大,大到你8核cpu都承受不了;慢查询,数据库执行sql语句操作(查询数据、修改数据)会产生大量的逻辑读,将读出来的数据维护到临时表中(内存),系统需要消耗较多的cpu来维持内存与磁盘数据的一致性。大多数情况下都是开发人员对sql的把握质量不够,导致慢sql查询的产生,进而影响数据库的整体运行状况。大量行锁冲突、行锁等待或后台任务也有可能...

weixin_30624767的博客 1436

mysql进程占用cpu100%_MySQL服务进程占用系统CPU达100%-阿里云开发者社区

故障现象:ping云主机严重丢包,丢包率达99%,仅有一两个包可到达;更无法远程;排查:云主机 CentOS6.4 后台查看CPU占用高达99% 还好能登入系统,操作也并不卡顿;top查看 mysql服务进程占用CPU达100%如图:两分钟后,系统卡死;(若是系统没有卡死的话还可以经确认后重启mysql服务,以结束连接;)系统卡死无奈只能重启系统;重启后CPU直线下降:不再丢包,远程服务正常;分析...

weixin_42502378的博客 182

阿里云 mysql 100_MySQL服务进程占用系统CPU达100%-阿里云开发者社区

故障现象:ping云主机严重丢包,丢包率达99%,仅有一两个包可到达;更无法远程;排查:云主机 CentOS6.4 后台查看CPU占用高达99% 还好能登入系统,操作也并不卡顿;top查看 mysql服务进程占用CPU达100%如图:两分钟后,系统卡死;(若是系统没有卡死的话还可以经确认后重启mysql服务,以结束连接;)系统卡死无奈只能重启系统;重启后CPU直线下降:不再丢包,远程服务正常;分析...

weixin_39755712的博客 476

mysql语句查询慢造成mysql卡死_MySQL_一次MySQL慢查询导致的故障,我们知道分析MySQL语句查询性 - phpStudy...

一次MySQL慢查询导致的故障我们知道分析MySQL语句查询性能的方法除了使用EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。一、起因研发反应某台数据库僵死,后面的会话要么连接不上,要么要花费大量的时间返回结果,哪怕是一个简单的查询。二、处理首先去监控平台查看服务器以及数据库状态,发现这台数据库有大量的慢查询。继续...

weixin_35128151的博客 325

解决Linux kernel:NMI watchdog: BUG: soft lockup 报错(CPU卡死终极方案)

本文针对Linux系统中出现的"kernel:NMI watchdog: BUG: soft lockup"报错问题,提出全流程解决方案。该错误本质是CPU核心被进程占用超过阈值(默认20秒)导致系统卡死,常见于Docker部署SpringBoot+MySQL+Nginx等多服务场景。文章首先提供紧急处理方案(终止高负载进程、重启服务器),随后给出永久解决方案:提升服务器配置(建议4核8G)、优化低效SQL和索引、合理限制Docker容器资源、优化磁盘IO等。最后强调验证优化效果的方法和

经历过大厂、小厂风风雨雨的程序佬 1218
上一篇: innodb不同场景下加锁分析总结
下一篇: MySQL 两个备机同时挂掉故障分析
postgres20
博客等级 码龄10年 100粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值