-
Describe the bugWe have noticed a slowdown in communication on our PLCs and at some point we had a complete communication loss. We have checked the rabbitmq log file and found some warnings and errors. It seems that there are some issues related to writing to the log-file itself. The full log file can be downloaded here, the file size was too big for github. Here is a screenshot from the RabbitMQ Web Interface (Overview) We have noticed, that in the log file, which you can see in the screenshot, that there are logs from 12:54 written between logs from 12:53, so maybe this is an indicator for you to understand what's going wrong here. We have noticed also this error line, which came ~100 times in a row:
Reproduction steps??? Expected behaviorno communication interrupts to PLC Additional contextNo response |
Beta Was this translation helpful? Give feedback.
Replies: 7 comments 2 replies
-
A memory alarm is a deliberate mechanism, so the fact that it was triggered is not a bug: https://www.rabbitmq.com/alarms.html You node status screenshot doesn't match that situation - only 233MB of memory was used at the time you took the screenshot. Judging from the logs, it seems like it's 3.12, but please provide the exact version. |
Beta Was this translation helpful? Give feedback.
-
The screenshot was taken at the time where I did the issue, the thing is just, that the slow communication still is present in the system. yes, the version is 3.12.0 |
Beta Was this translation helpful? Give feedback.
-
What is a "PLC"? A triggered memory alarm simply indicates that publishers According to the log, your clients do use QoS 0 publishing, therefore you either run the risk of hitting the above resource alarms, or must use message TTL or better yet, a length limit for MQTT subscriber queues.
means that a socket write by RabbitMQ on an MQTT client connection has failed. If you have a lot of those, it means that something is up with networking on your node, in a way that affects MQTT |
Beta Was this translation helpful? Give feedback.
-
At the bottom of the log you can find
which is a yet another example of a socket failure ( |
Beta Was this translation helpful? Give feedback.
-
Thanks for pointing the TCP connection issue out. To answer your question, a PLC is a "programmable logic controller", see here for further info. We have multiple machines with PLCs that are controlling their behavior and using the RabbitMQ message broker to exchange information with them. |
Beta Was this translation helpful? Give feedback.
-
Starting at 12:51:39, the log file shows many times
both for the same and for different MQTT connection processes. Only later at 12:54:12, the memory alarm kicks in. I suggest instead of logging and then ignoring the send failure, we should log and then immediately close the MQTT connection as done in #8553 and #9271.
Yes, to prevent overload, the logger will drop entries if too many lines are logged at once indicated by |
Beta Was this translation helpful? Give feedback.
-
Closing as #9271 has been merged. Please re-open if you still experience this issue in RabbitMQ >= 3.12.5 |
Beta Was this translation helpful? Give feedback.
Starting at 12:51:39, the log file shows many times
both for the same and for different MQTT connection processes.
Only later at 12:54:12, the memory alarm kicks in.
I suggest instead of logging and then ignoring the send failure, we should log and then immediately close the MQTT connection as done in #8553 and #9271.
This will hopefully lead to less follow up errors such as truncated logs and memory alarms.
Yes, to prevent overload, the logger will drop entries if too many lines are logged at once indicated by
drop mode
in the logs.