tcp - 顶点 tcp 客户端丢弃数据包
问题描述
我已经创建了 Vertx TCP Server 和相应的 TCP Client。TCP 客户端的工作是从特定目录读取日志(gzip 格式)并不断上传到服务器。然后服务器会做一些处理并持久化数据。由于日志采用 gzip 格式,因此日志文件的平均大小为 144 KB。我的 TCP 客户端模拟器产生 4 个线程,每个线程将创建 100 个这样的日志文件并将它们上传到顶点服务器。所以最后,我希望看到 400 (= 100 * 4) 个文件上传到服务器。但令我惊讶的是,一旦模拟器完成,我看到服务器只处理了 76 个文件,并且没有剩余 324 个文件的迹象。我已经多次运行它,但每次服务器处理大约 75 个文件。从 TCP 客户端日志中,我看到所有 400 个文件都已上传。所以看起来服务器正在丢弃一些数据包。但是从服务器日志中,我看到只处理了大约 76 个文件。后来我将模拟器生成的压缩日志文件大小减小到 8KB(现在每个日志文件的日志条目数减少了),这次我看到服务器端处理了大约 398 个文件。
显然这似乎是一些配置问题。也许我必须为 Vertex 服务器配置更多资源(实例、增加接收缓冲区大小和事件队列大小等)。但是,任何人都将如何知道数据包将被丢弃的限制。
- 更准确地说,在这种情况下需要什么“特定”配置。
- 其次,是否可以为 Vertx“TCP”客户端/服务器配置某种确认机制,以便客户端只有在成功处理之前上传的文件时才能上传后续文件。
解决方案
推荐阅读
- javascript - 无法在 Discord.js v12 上获取实际成员列表
- ios - Flutter:使用`ARCHS`设置构建目标`Pods-Runner`的架构:(``)
- python - 在 Python 中检测 Deflate 流的结束
- sql - 遍历用户并检查他们在过去 12 个月内是否存在
- vue.js - 如何在 Vue 中使用 v-for 更改数组中单个对象的输入值?
- javascript - React-Hooks:如何调用 useState 返回的函数
- python - 如何在没有列洗牌的情况下从 Dask Dataframe 制作新的 pandas Dataframe?
- python - 如何在python中检查程序的运行时间
- tabs - Puppeteer 关闭新标签
- php - 在 PDF Laravel 中获取错误未定义偏移量 -1