常见问题分析解决方案

一:线上问题排查

比如server有进程出现core

方法1:打开coredump,生成core文件,方便调试(也可拉倒线下调试)。

方法2:安装tcpcopy,将线上流量导到线下机器进行进行调试。

方法3:分析是否有多线程其中的部分线程退出导致其他线程出core等等

比如线上流量很少,但是server却像处理不过来

方法1:pstack查看进程都在干什么,阻塞在哪里,并对照代码分析。

方法2:查看网络tcp状态,查看服务进程都处于什么状态。

方法3:使用tcpdump分析网络状态。

最后排查到是和系统设置有关:

netstat -n | grep 183.136.237.226:80 | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'
修改系统网络参数:

net.ipv4.tcp_max_syn_backlog = 10240(默认1024,需调大)

net.core.somaxconn = 10240(默认128,需调大)

二:常见性能问题解决方法:

1:使用工具运行程序,gprof,Valgrind和Purify可以作为性能检测工具,检测出每个函数的运行时间和处理过程中所占比重。

2:查看在运行过程中所占比重大的函数,分析每个函数占比重大的原因,讨论改进方法并进行修改。

3:重新测试看是否达到效果,重复1,2,3

小提示:linux下程序编译的时候加上-O2,程序性能可以提高至少10%以上,如果程序中没有对象池,使用tcmalloc也能提高10%到15%的效率。

内存泄露,越界问题排查
1:使用valgrind运行程序,从线上tcpcopy部分流量过来,将valgrind运行结果存入到文件中。

2:逐条分析valgrind提示内存泄露或者越界的地方,看是否有释放内存的地方,或者是否真的越界,如有则修正

3:修正之后出新版本,重复1,2,3

4:top命令观察一段时间发现没有内存增加或者处理出错的时候则说明问题解决。

其他工具:

1:火焰图工具:perf

2:ptrace查看程序的函数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值