记二次C++游戏服务器CPU 100% 解决过程
第一次:
top -c 查看一下进程ID : 30850
pstack 30850 查看一下当前堆栈的信息, 刷一闪, 满屏std的东西~~
一个一个线程慢慢看下来, 发现代码最终在: strText.replace(size, strlen(pszSrcText), pszDestText);
再往上看一层 strReplace(text, "'", "''"), 字符串替换触发死循环, 解决~
第二次:
top -c 查看进程ID, 118947
线程信息
Thread 7 (Thread 0x7f3c5af0c700 (LWP 118990)):
#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
Thread 4 (Thread 0x7f3c594f6700 (LWP 119003)):
#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
线程4和7死锁, 把这个锁的占用者找出来, 发现是线程5出触发了网络消息回环占用了锁, BUG导致一直释放不了
解决~
希望不要有第三次~