关于处理一个C++服务端程序频繁挂掉的心路历程

1.项目背景

     a.项目需求

      最近在做一个关于机器人图像识别项目,有太菜原由。大大小小遇到不少的坑分享出来。大概需求:客户端(发送请求端)实时发送机器人巡检图片,通过Http接口协议方式将图片流按照Json格式发送到服务端。 

     b.组织架构及其运行环境

       客户端(机器人实时采集的数据)发送图片流(秒钟3张左右)到服务端(图片分析识别)并调用识别算法,最后将识别后的图片返还给请求端。

 2.问题概述

  a.请求头未写导致response无返数据(Http报文格式问题)

   b.本地文件无读写权限导致程序异退出

   c.某些局部变量未初始化出现空指针、野指针进而导致程序异常Dump

   d.数据越界异常

   e.new  allocator等动态申请动态内存未及时释放或者没有被释放与之对应的delete   free

   f.多线程文件访问导致内存溢出或者内存泄漏等问题

      内存溢出:申而不足

      内存泄漏:申而未还

  g.请求响应延迟时间过长导致客户端未及时收到响应数据。

  h.Libevent(基于Epoll封装而成的http高并发处理框架)版本过低(本质是低版本动态库存在缺陷问题==)

3.分析、处理过程

4.用到的技术

单一线程处理==>多线程

libevent高并发http处理框架

线程锁

请求客户端框架(curl)

5.学到内容

良好的心态是处理问题的关键所在,步步为营的策略是处理问题的强心剂;

     

猜你喜欢

转载自blog.csdn.net/xiaoshunzi111/article/details/104605481