运维:记录因grpc需求而引发的glibc故障

Posted 云服务圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运维:记录因grpc需求而引发的glibc故障相关的知识,希望对你有一定的参考价值。

背景需求:

准备使用grpc作为服务组间的服务通信协议


问题发生:

本地开发采用mac开发,依赖如下:

<dependency>

            <groupId>org.lognet</groupId>

            <artifactId>grpc-spring-boot-starter</artifactId>

            <version>2.4.3</version>

 </dependency>



在采用grpc 相关组件对 protobuf 文件进行编译

<build>

    <extensions>

      <!-- os-maven-plugin -->

      <extension>

        <groupId>kr.motd.maven</groupId>

        <artifactId>os-maven-plugin</artifactId>

        <version>${os-maven-plugin.version}</version>

      </extension>

    </extensions>

    <plugins>

      <!-- spring-boot-maven-plugin -->

      <plugin>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-maven-plugin</artifactId>

      </plugin>

      <!-- protobuf-maven-plugin -->

      <plugin>

        <groupId>org.xolstice.maven.plugins</groupId>

        <artifactId>protobuf-maven-plugin</artifactId>

        <version>${protobuf-maven-plugin.version}</version>

        <configuration>

          <!--默认值-->

          <protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot>

          <!--默认值-->

          <!--<outputDirectory>${project.build.directory}/generated-sources/protobuf/java</outputDirectory>-->

          <outputDirectory>${project.build.sourceDirectory}</outputDirectory>

          <!--设置是否在生成java文件之前清空outputDirectory的文件,默认值为true,设置为false时也会覆盖同名文件-->

          <clearOutputDirectory>false</clearOutputDirectory>

          <!--默认值-->

          <temporaryProtoFileDirectory>${project.build.directory}/protoc-dependencies</temporaryProtoFileDirectory>

          <!--更多配置信息可以查看https://www.xolstice.org/protobuf-maven-plugin/compile-mojo.html-->


          <protocArtifact>com.google.protobuf:protoc:3.5.1-1:exe:${os.detected.classifier}</protocArtifact>

          <pluginId>grpc-java</pluginId>

          <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.11.0:exe:${os.detected.classifier}</pluginArtifact>

        </configuration>

        <executions>

          <execution>

            <goals>

              <goal>compile</goal>

              <goal>compile-custom</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

    </plugins>

  </build>



本地mac 可以编译。但是当使用jenkins 进行构建时

报错。


提示glibc版本有问题,然后打算升级,glibc.结果把/lib64/libc.so.6 给替换了,造成Linux ssh无法远程登录,bash命令无法执行。

错误出现如下状态:



最后解决:

  1. 将该快磁盘,挂载在其他系统(ISO盘)启动,使其启动。然后将原来软连接删除。

  2. 手动创建,ln -s /lib64/libc-2.12.so /lib64/libc.so.6


参考:

https://unix.stackexchange.com/questions/179233/error-while-loading-shared-libraries-libc-so-6-cannot-open-shared-object-file

http://blog.51cto.com/asd9577/1931442

http://blog.51cto.com/314258/1704852

https://blog.csdn.net/zxyuying/article/details/44085753

https://help.aliyun.com/knowledge_detail/41478.html#%E9%80%9A%E8%BF%87%E5%9B%9E%E6%BB%9A%E7%A3%81%E7%9B%98%E6%81%A2%E5%A4%8D

以上是关于运维:记录因grpc需求而引发的glibc故障的主要内容,如果未能解决你的问题,请参考以下文章

关闭 Flink Checkpoint,引发 P3 故障

基于网络拓扑及告警的故障根因定位系统实现及算法研究赛题需求分析

中间件运维之故障自愈

线上bug日志监控,主动运维平台搭建

因打印日志而引发的故障

云智慧AIOps智能运维应用实战之智能故障预测