• 它突然就不好了 ----Go 调用C++异常


    前言

    线上程序已经部署了2周了,一切都很正常。

    周五,总是令人愉快的,对不对?上班族嘛,黑色星期一,快乐星期五。

    然鹅,我的那个周五漆黑一片。

    早上八点多一点,微信就响起来了,顿感不妙,不是来自女人的第六感,那是来自职业的第一感。

    果然,是一个工具端同事打来的,噼里啪啦的说,所有的阅片都访问不了啦,你快看看呀,我这边查了日志发你了。

    日志大意内容就是无法访问我这边提供的一个服务,这个服务为工具服务提供了关键的数据。

    毫无思绪,回忆了一下,我这边最近无任何改动,无任何部署。。。

    然后领导的电话轰炸开来,说了噼里啪啦一大片,我说我还有办公小时到公司,现在地铁上。

    那一刻,漫长的半小时,我考虑最多的是,我怎么会没有长翅膀呢?

    领导的电话不停打进来,他很急,我知道,因为刚好那天老板要给重要客户演示我们的整个系统及设备的运作。天哪!不管是什么原因,我仿佛已经能听到他咬牙发出的咯吱声了。

    尽管我下地铁已经用跑的了,但腿真的只有那么长。

    到公司,扔下包,马上进入战斗模式。

    服务环境:windows2008阿里云服务器、事故程序为 go1.15.5编译的go执行文件

    现象:

    检查对应的服务发现,程序在启动后不久就会崩掉。

    查异常日志,发先每次崩掉之前都在调用C++提供的接口,接口调用失败,程序就崩了

    处理办法:

    1、先去掉调用C++过程,让服务不崩溃。重新部署上去的程序果然就好了。前线恢复平静,开始分析原因。

    2、分析原因。

    在此程序中总共调用了2个C++提供的dll程序,本次出问题的是其中一个,另一个正常。两个动态库都已经有半年没有更新,实在想不出为什么。在C++同事分析了一通后得出的结论是:两个动态库编译的环境不同。可能阿里云的服务器在事故前更新了什么鬼,导致其中一个比较老板的vs编译出来的dll出问题了,而且问题原因不明。

    后续处理办法:用一个单独的go服务器程序调用C++接口,即便是C++接口出问题了,也不至于主服务go崩掉。

    哎!其实还是一个迷,还是一个炸弹。

    对于外界来说,我提供的服务又事故了一次。我吃了一缸黄连。。。

  • 相关阅读:
    Maven项目,进行编译,使用idea的 编译功能,就是正常的,但是在终端中执行 mvn clean compile 报错
    神经网络需要的数学知识,神经网络的数学基础
    Linux中Team链路聚合配置
    如何利用Java实现 AI 人脸融合特效
    SAP创建权限对象、角色、并分配角色
    websocket协议详解
    了解public,protected,default以及private看完这一篇就足够!!!
    DPVS的定时器
    基于Java+SpringBoot+vue+element实现婚纱摄影网系统
    网工内推 | 技术支持工程师,厂商公司,HCIA即可,有带薪年假
  • 原文地址:https://blog.csdn.net/l09120204/article/details/126306907