以快速的速度将数据从 websocket 管道/摄取到 elasticsearch 中,以避免缓冲区过载

问题描述

我正在从事的项目以极快的速度从单个 WebSocket 读取数据。我遇到的问题是 websocket 提供程序要求您尽快处理数据,以避免在它们结束时溢出临时缓冲区。

我遇到的问题是我使用 PHP 尝试将文档索引到 elasticsearch 中我们从 websocket 收到的每条消息中,这速度不够快,由于缓冲区/队列已满,导致我们的套接关闭结束。

我希望寻求一些帮助,以便在不丢失套接字中的任何数据的情况下建立最佳解决方案。

我的理论是:

  1. 连接到袜子并保持连接
  2. 收到的每条消息都被移交给异步进程或日志存储,该进程或日志存储可以处理 Elasticsearch 中的摄取,而无需 websocket 在发送/处理下一条消息之前等待。

使用 elasticsearch PHP 索引每条消息根本不会切断它,10 分钟后套接关闭

服务器资源很好,16 核,128gb 内存和 10gbps 连接。如果我从 PHP 代码删除 elasticsearch 索引函数套接字保持连接良好,服务器资源使用率约为 10%。

有更多经验的人能否提出更好的解决方案,或者可能让 logstash 在不同的线程上处理这个问题。

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)