tulir/whatsmeow

Goroutines use a lot of RAM memory after this error

Opened this issue · 2 comments

There are thousands of logs like this

I send thousands of messages a day, but some messages give an error like this, one attempt to send a message can generate tens of thousands of goroutines that do not close and take up RAM memory, so I have to restart server to clear goroutines

Pls help, how can I solve this RAM memory usage?

11:16:36.406 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.406 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.406 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.406 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.406 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.406 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.406 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.406 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.407 [Client WARN] Handler queue is full, message ordering is no longer guaranteed
11:16:36.408 [Client WARN] Handler queue is full, message ordering is no longer guaranteed

One of your event handlers is likely to respond too slow

From what I can see in the log timestamp, the log lines differ by almost only 1 ms or even less. I believe that currently, you are running goroutines without any limits (max workers). When you run the client after it has been turned off for a while, many incoming messages are processed almost simultaneously without delay, filling up the goroutine queue.

You need to set a maximum limit on the number of goroutines running in the event handler that you added to client.AddEventHandler(), manage it by your own.