node.js - NodeJS 在服务器上启用 grpc 压缩
问题描述
我已经根据https://github.com/grpc/grpc-node/blob/master/doc/compression.md配置了 grpc 客户端, 因此它们的配置如下所示:
"channelOptions": {
"grpc.keepalive_time_ms": 1000,
"grpc.keepalive_timeout_ms": 2000,
"grpc.keepalive_permit_without_calls": 0,
"grpc.http2.max_pings_without_data": 0,
"grpc.http2.min_time_between_pings_ms": 5000,
"grpc.http2.min_ping_interval_without_data_ms": 3000,
"grpc.default_compression_algorithm": 2,
"grpc.default_compression_level": 2
}
然后我将以下配置添加到 grpc 服务器:
"serverOptions": {
"grpc.max_concurrent_streams": 1000,
"grpc.keepalive_time_ms": 1000,
"grpc.keepalive_timeout_ms": 2000,
"grpc.keepalive_permit_without_calls": 0,
"grpc.http2.max_pings_without_data": 0,
"grpc.http2.min_time_between_pings_ms": 5000,
"grpc.http2.min_ping_interval_without_data_ms": 3000,
"grpc.default_compression_algorithm": 2,
"grpc.default_compression_level": 2
}
但由于某种原因,我总是收到错误消息:“错误代码:内部,检查:不可用,未知,DEADLINE_EXCEEDED,DATA_LOSS”
似乎没有关于这个问题的明确文档,我已经尝试过不同的 default_compression_algorithm 和 default_compression_level 组合。
谁能解释一下这里发生了什么以及为什么服务器可能会忽略发送给他的消息(我已经记录了接收端,当我在客户端激活压缩时它是无声的)
编辑:库版本:
- 客户 -
├─┬ @grpc/grpc-js@1.2.0
├─┬ grpc@1.24.3
├─┬ grpc-tools@1.9.1
├─┬ grpc_tools_node_protoc_ts@2.5.11
- 服务器
├─┬ @grpc/grpc-js@1.2.12
├─┬ grpc@1.24.4
├─┬ grpc-tools@1.9.1
├─┬ grpc_tools_node_protoc_ts@2.5.11
解决方案
推荐阅读
- apache - 在 Procfile 之后,Apache 中的 Heroku 错误 403 上的 Laravel 8.4 项目
- format - zsh_history文件中以冒号“:”开头的原因
- python - 如何通过 Rest API(传入 webhook)回复 Microsoft Teams 频道中的现有消息?
- q-learning - Q-learning中的环境
- laravel - laravel 语法错误,期望 ',' ,期望 ';'
- typescript - 与较新版本相比,Typescript Exclude<> 在 3.8 和以前版本中的行为不同
- flutter - 如何在 VS Code 中打开模拟器或连接 LD Player 进行颤振?
- javascript - 需要使用 fetch 从(laravel api)获取数据,然后将其解析到另一个函数
- arrays - 针对异常数组检查对象字符串
- sql-server - ADODB 通过 Excel 连接到 SQL-Server