PRC编程 常见问题

简介:


PRC编程 常见问题



    RPC编程常常会碰到各种问题,尤其对于刚接触和使用RPC的开发人员而言,有些简单的问题却很难通过GDB等常规手段定位。因此,这篇博文归纳了RPC开发过程中常见的一些问题和解决办法,以便自己今后参考。当然,随着对RPC的更多接触,会碰到更多的问题,将会在后面陆续整理到一起。


1. RPC: Unable to receive 错误


现象如下:

[root@localhost bin]# ./test_rpc

probe_nvm_ops: Fail to detect (simulated) nvm by cmds lsmod | grep "arxcis"!

probe_nvm_ops: Fail to detect (simulated) nvm by cmds lsmod | grep "gigaram"!

probe_nvm_ops: Success to detect (simulated) nvm by cmds cat /proc/cmdline | grep "mem"!

nvm status on 127.0.0.1: OK

nvm status on 10.0.0.110: OK

10.0.0.111: RPC: Port mapper failure - RPC: Unable to receive


解决办法Solution:重启(启动)rpc服务

systemctl start rpcbind.service


2. RPC: Unable to send 错误

错误现象如下: 

RPC: Port mapper failure - RPC: Unable to send


解决办法:

检查本地的IP 是否设置正确,它必须存在,且必须和注册RPC时使用的IP一致。





3. Program not registered错误

现象如下:

[root@localhost bin]# ./test_rpc

probe_nvm_ops: Fail to detect (simulated) nvm by cmds lsmod | grep "arxcis"!

probe_nvm_ops: Fail to detect (simulated) nvm by cmds lsmod | grep "gigaram"!

probe_nvm_ops: Success to detect (simulated) nvm by cmds cat /proc/cmdline | grep "mem"!

nvm status on 127.0.0.1: OK

nvm status on 10.0.0.110: OK

10.0.0.111: RPC: Program not registered


解决办法Solution: start a thread or daemon to rigeister RPC in remote node


4. 对于复杂的数据结构没有生成XDR线程


这个时候需要用rpcgen -c *.c 来自动生成XDR线程,或者.x文件格式错误、版本冲突。




当然了,实际开发过程中碰到的问题可能千奇百怪,RPC开发过程中碰到的问题需要结合错误信息、基于RPC底层机制,有时还需要参考自动生成的参考代码,才能高效的定位和解决问题。













本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1829448 ,如需转载请自行联系原作者



相关文章
|
开发工具 数据安全/隐私保护 git
Github新的认证方式
Github新的认证方式
383 0
|
安全 网络安全 数据安全/隐私保护
DMZ是什么?它是如何工作的?
DMZ,中文通常译为“隔离区”或“非军事化区”,是在网络安全领域中用来描述一个逻辑或物理的网络子段,这个子段通常位于组织的内部网络和外部网络(如互联网)之间。DMZ的主要目的是提供一个受限制且受控的环境,允许对外提供服务的服务器放置在此区域,从而在一定程度上保护内部网络的安全。
2362 1
|
算法 UED 索引
Nmslib高维空间最近邻逼近搜索算法介绍
业务场景 上一次介绍图像搜索的基本原理,现在记录下使用的数据包的问题。查询图片先进行特征提取,使用一个向量来表示,之后使用该向量与数据库中所有的商品向量进行计算相似度指标,比如cos距离,欧式距离,汉明距离。
6326 0
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
1984 15
|
SQL 关系型数据库 数据库
使用 PostgreSQL 和 Python 实现数据库操作
【10月更文挑战第2天】使用 PostgreSQL 和 Python 实现数据库操作
2022最新最详细必成功的在Vscode中设置背景图、同时解决不受支持的问题
这篇文章提供了在VScode中设置背景图的详细步骤,包括下载background插件、编辑setting.json文件、配置背景样式,并解决了设置后出现的不支持提示的问题。
2022最新最详细必成功的在Vscode中设置背景图、同时解决不受支持的问题
|
网络协议 安全 分布式数据库
技术分享:分布式数据库DNS服务器的架构思路
技术分享:分布式数据库DNS服务器的架构思路
278 0
|
弹性计算 网络协议 Linux
阿里云主机构建FRP内网穿透家用服务器避坑指南
详述了利用FRP工具搭建内网穿透的流程,包括阿里云ECS的配置、家用服务器的准备、FRP工具的下载与配置,以及通过SSH远程访问本地服务器的解决策略,确保了内外网间的稳定连接。
4851 1
阿里云主机构建FRP内网穿透家用服务器避坑指南
|
存储 前端开发 数据处理
|
开发工具 Android开发 git
Android自定义View——可以设置最大宽高的FrameLayout
Android自定义View——可以设置最大宽高的FrameLayout
552 0