- 博客(32)
- 资源 (1)
- 收藏
- 关注

原创 解Bug之路-串包Bug
解Bug之路-串包Bug笔者很热衷于解决Bug,同时比较擅长(网络/协议)部分,所以经常被唤去解决一些网络IO方面的Bug。现在就挑一个案例出来,写出分析思路,以飨读者,希望读者在以后的工作中能够少踩点坑。串包Bug现场前置故障Redis超时由于某个系统大量的hget、hset操作将Redis拖垮,通过监控发现Redis的CPU和IO有大量的尖刺,CPU示意图下图所示:CPU达到了100%,导致很多Redis请求处理不及时,其它业务系统都频繁爆出readTimeOut。此时,紧急将这个做大
2020-09-08 10:09:54
326
1
原创 日常Bug排查-改表时读数据不一致
线上环境是错综复杂的,改表等运维操作也会导致出现意料之外的结果,很多组件的特性在一些特殊的情况下会被打破,所以防御式编程就显得尤其重要了。
2024-06-25 23:03:27
570
原创 日常Bug排查-MVCC和for update混用导致读数据不一致
MVCC 和数据库锁两者采用了不同的机制,如果不清楚其中的原理可能会导致不一致的现象出现。同时,在这次的问题中业务对于 B 表不用锁这样的优化实际上是一个负优化。这再次提醒我们,不要过早优化!
2024-06-02 13:18:20
380
原创 日常Bug排查-偶发性读数据不一致
隔离级别是比较微妙的,相关问题大多只在高并发大流量下才会有偶发性的显现,分库分表集群中不同 DB 的隔离级别由于种种原因导致的不一致会加大问题的排查难度。有时候遇到无法解释问题时可以考虑下底层组件的设置问题。
2024-05-20 09:00:00
353
原创 日常Bug排查-连接突然全部关闭
笔者在了解清楚 Bug 现场之后,大概花了 20 分钟就定位到了是 TCP 内存瓶颈的问题,然后借助 GPT 非常快速的找到了相关解决方案。不得不说 GPT 能够大幅加速我们搜索的过程,笔者个人感觉可以在很大程度上替代搜索引擎。但喂给 GPT 的 Prompt 还是需要通过 Bug 现场以及一定的经验来构造,它代替不了你的思考,但能大幅加速信息的检索。
2024-05-12 19:46:43
704
原创 日常Bug排查-系统失去响应-Redis使用不当
日常Bug排查-系统失去响应-Redis使用不当前言日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材^_^。Bug现场开发反应线上系统出现失去响应的现象,收到业务告警已经频繁MarkAndSweep(Full GC)告警。于是找到笔者进行排查。看基础监控首先呢,当然是看我们的监控了,找到对应失去响应的系统的ip,看下我们的基础监控。机器内存持续上升。因为我们是java系统,堆的大小一开始已经设置了最大值。--XX:Xms2g
2021-05-31 15:07:37
222
原创 从Linux源码看Socket(TCP)的listen及连接队列
从Linux源码看Socket(TCP)的listen及连接队列前言笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就来从Linux源码的角度看下Server端的Socket在进行listen的时候到底做了哪些事情(基于Linux 3.10内核),当然由于listen的backlog参数和半连接hash表以及全连接队列都相关,在这一篇博客里也一块讲了。Server端Socket需要Listen众所周知,一个Server端Socket的建立,需要so
2020-10-15 14:58:17
562
原创 从Linux源码看Socket(TCP)的bind
从Linux源码看Socket(TCP)的bind前言笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就来从Linux源码的角度看下Server端的Socket在进行bind的时候到底做了哪些事情(基于Linux 3.10内核)。一个最简单的Server端例子众所周知,一个Server端Socket的建立,需要socket、bind、listen、accept四个步骤。代码如下:void start_server(){ // serv
2020-10-09 14:25:16
471
原创 分库分表中间件的高可用实践
分库分表中间件的高可用实践前言分库分表中间件在我们一年多的锤炼下,基本解决了可用性和高性能的问题(只能说基本,肯定还有隐藏的坑要填),问题自然而然的就聚焦于高可用。本文就阐述了我们在这方面做出的一些工作。哪些高可用的问题作为一个无状态的中间件,高可用问题并没有那么困难。但是尽量减少不可用期间的流量损失,还是需要一定的工作的。这些流量损失主要分布在:(1)某台中间件所在的物理机突然宕机。 (2)中间件的升级和发布。由于我们的中间件是作为数据库的代理提供给应用的,即应用把
2020-09-16 17:47:40
190
原创 解Bug之路-Nginx 502 Bad Gateway
解Bug之路-Nginx 502 Bad Gateway前言事实证明,读过Linux内核源码确实有很大的好处,尤其在处理问题的时刻。当你看到报错的那一瞬间,就能把现象/原因/以及解决方案一股脑的在脑中闪现。甚至一些边边角角的现象都能很快的反应过来是为何。笔者读过一些Linux TCP协议栈的源码,就在解决下面这个问题的时候有一种非常流畅的感觉。Bug现场首先,这个问题其实并不难解决,但是这个问题引发的现象倒是挺有意思。先描述一下现象吧,笔者要对自研的dubbo协议隧道网关进行压测(这个网关
2020-09-14 11:30:16
2151
1
原创 周游六虚与天子望气
周游六虚与天子望气沧海里面,有两大绝世武学。一为克尽天下真气,视所有招式为无物的周游六虚功。一为可勘破天下真气流动与破绽的天子望气术。两大绝学走的却是相反的路子,一个是靠自身的境藐视天下,一个是靠自己的观察去找到所有武学的弱点。但总比较而言,还是周游六虚技高一筹。但周游六虚之功太强,以致天妒,仅有一人能行,其他若强行学之,只能受最强之人的牵制。我由此得到了启发,在我开始做某件事得
2015-05-03 17:20:12
6033
原创 身为剑所天成
“身为剑所天成”“血若钢铁铮铮,心似琉璃易碎”“横行沙场无数,未尝败绩”“然虽不曾落败”“却也不被理解”“其常独立于剑丘之上,沉醉于胜利之中”“故其之一生,没有意义”“其身,定为无限之剑所天成”
2015-05-03 17:20:09
1357
原创 2011年03月04日
考研74 77 139 135 总分425 It's time to rage my dream.00:-0.50]Rage Your Dream [00:02.10]我没有留下任何印象 [00:03.58] [00:06.29]这个城市由假象所制造 [00:08.44] [00:10.12]等待你的感动 [00:12.50] [00:13.66]在这可笑
2015-05-03 17:20:03
416
原创 中兴捧月 俄罗斯套娃奖品
#include #define FALSE0 //用来标记有未被访问过 #define TRUE 1 #define R 5 #define C 5#define flag1 -10#define Max_Size 100#define MAX(x,y) ((x) > (y) ? (x) :(y)) int visited[Max_Size][Max_Siz
2015-05-03 17:19:58
425
原创 操作系统Marking02源代码
文件比较多! >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1.首先是编译文件makefile:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2015-05-03 17:19:55
359
原创 2010年02月28日
;%define _BOOT_DEBUG_%ifdef _BOOT_DEBUG org 0100h%else org07c00h%endif;==================================================================%ifdef _BOOT_DEBUG_BaseOfStack equ 0100h ;调试状态下堆栈基地
2015-05-03 17:19:52
548
原创 多区域选路算法研究
#include #include #include /* Dijkstra算法 */#define MAX_VERTICES 10 /* maximum number of vertices */#define FALSE 0#define TRUE 1#define INT_MAX 10000 //定义无穷大为1000#define MAX_POINTS
2015-05-03 17:18:40
312
原创 loader
org 0100hjmp LABEL_START;磁盘文件定义%include "fat12hdr.inc"%include "load.inc"%include "pm.inc";GDTLABEL_GDT: Descriptor 0, 0, 0 ;空描述符LABEL_DESC_FLAT_C: Descriptor 0,0fffffh, DA_CR| DA_32 | DA_L
2015-05-03 13:38:36
385
原创 JAVA随机大楼
import java.awt.Graphics;import java.applet.Applet;import java.awt.*;import javax.swing.JApplet;import javax.swing.*;import java.util.Random;public class Building1 extends JApplet{ public
2015-05-03 13:33:25
677
原创 JAVA小键盘
import java.awt.*;import javax.swing.*;import java.awt.event.*;public class JANPAN extends JFrame{ JTextAreatext; JButton btn[]=newJButton[9];
2015-05-03 13:33:21
650
原创 JAVA秒表
import javax.swing.*;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.*;import java.util.Calendar;import java.util.GregorianCalendar;public class TimerTest
2015-05-03 13:33:18
721
原创 1.7子程序及其应用
实验任务:编一子,主程序,其功能要求如下:子程序的入口参数为一ASCII码字符,它将该字符的ASCII码分部以十六进制和二进制形式显示出来。如主程序调用该子程序时,若传送给子程序的ASCII码为42H,则显示信息如下:B: 42H 01000010主程序的功能是反复从键盘输入字符,然后调用上述子程序,用十六进制及二进制形式显示出键入字符的ASCII码,当输入ESC时返回Dos。
2015-05-03 13:33:16
633
原创 1.6循环程序设计
实验任务:编一程序,显示ASCII码表,将这些字符以16行,16列的表格形式显示出来。要求显示时按ASCII码的递增顺序分行显示(即行内的ASCII码依此递增,与附录D列出的表格位置正好倒置)。每个相邻的两字符间用空白符或空格分开。注:采用的是BIOS调用代码(测试可用,排版格式问题请自行调整):;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2015-05-03 13:33:13
501
原创 1.5分支程序
实验任务一:二进制到ASCII码的转换在DATA单元存放着一个8位二进制码,将其按位转换成一串ASCII码,即'1'转换成'1'的ASCII码31H;'0'转换成30H。并依此存放在以STRING开始的RAM区中(高位在前地位在后)。代码:;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2015-05-03 13:33:10
357
原创 1.4串处理程序
实验任务:编写程序,建立数据段data,将你的姓名及学号存入数据段的BUFFER1区域,然后利用程序将BUFFER1区域中的字符串依次传送到从BUFFER2开始的内存区域中去。以下是本人自己的代码,测试可用,代码如下:;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2015-05-03 13:33:07
608
1
原创 回退n帧协议(基于Opnet)
/* Process model C form file: Pro5_proc.pr.c *//* Portions of this file copyright 1986-2008 by OPNET Technologies, Inc. *//* This variable carries the header into the object file */c
2015-05-02 23:52:06
1828
原创 滑动窗口协议(基于Opnet)
/* Process model C form file: Pro4_proc.pr.c *//* Portions of this file copyright 1986-2008 by OPNET Technologies, Inc. *//* This variable carries the header into the object file */c
2015-05-02 23:50:41
1056
原创 选择性重传协议(基于Opnet)
/* Process model C form file: Pro6.pr.c *//* Portions of this file copyright 1986-2008 by OPNET Technologies, Inc. *//* This variable carries the header into the object file */const
2015-05-02 23:48:40
1261
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人