Keep in mind: Yate is not a SIP proxy: it's a B2BUA.
The call legs are processed separately. ACKs are sent automatically.
Another specific behavior: if a final response is received shortly after a provisional message (before the provisional message is processed) the provisional message will be dropped.
I've seen in log a 200 OK received just after 180 Ringing.
In your system the logs indicates a slow database or too many queries.
Call route/execute takes about 5 seconds each (leading to about 10 seconds delay in forwarding a call): you may ignore it if you can live with it.
The issue seems to be messages processed by cdr builder.
The cdr builder emits a lot of messages. They will be serialized by the database module. The sending thread will wait until the message is processed.
This will delay other messages processing.
Try the following:
- Change 'poolsize' in mysqldb.conf (try setting it to 10): this will increase the number of database connections.
- If not necessary try to disable cdr update in database (the 'cdr_update' parameter in register.conf): this will save a lot of database accesses, you may loose some cdr status if yate crashes