我需要使用 --real-time-html 选项运行多个 goaccess 进程来分析多个日志。我的命令是:
/usr/bin/goaccess --real-time-html -o /data/html/log1/index.html -f log/log1.log --port=7890
/usr/bin/goaccess --real-time-html -o /data/html/log2/index.html -f log/log2.log --port=7891
...
当只有 1 个进程在运行时,一切正常,并且我可以在 Chrome 上看到 websocket 的数据帧,每个数据帧通常长度相同;
但是当 2 个或更多进程正在运行时,发生了 2 件事:
- 在 goaccess 进程正在运行的终端上,“SIGPIPE 已捕获!” 连续出来;
- 在网页上,仪表板不连续地显示错误数据,我注意到浏览器接收到的 websocket 数据帧的长度有很大不同(这意味着网页正在从其他 goaccess 进程接收不同的 websocket 数据帧),当数据帧长度与仅运行1个goaccess进程时的数据长度相似,网页显示的数据是正确的,当数据帧长度不同时,数据是错误的。
似乎即使我使用“--port”选项运行 goaccess 进程来为每个 WebSocket 进程指定不同的端口,多个 websocket 服务仍然混在一起。