Performance: add a message server for events/logs?
The current D implementation has performance issues with stats/events.
Looking at a few performance profiles it looks like events still take a toll on the system with C.
Most notably the main function /sytem profile look-up takes about 80% of total time for events.
0 confirm performance bottleneck
1 cache system profile / data in an object cache. Would benefit everybody.
2 implement a message server
creates a fast entry point - i.e. load and check as little as possible, authentication is valid
stores the message in a fast message queue - i.e. on disk and/or in shared memory
cron the message queue asynchronously to perform the work when the system is not used much, for example during the night
Updated by Sven Vanpoucke about 9 years ago
In the last few days we have improved the performance a lot on a few queries that are used on each page. But now it seems that the tracking is the biggest bottleneck on each page (because each page needs online tracking / visit tracking). For each event we need at least two queries that receive the event and the trackers. Then we will need at least one more query to add the data to the database. But for example the online tracker uses 3 queries already. I believe this is a very very good solution but i don't know how PHP can work with asynchronous processes because we don't want chamilo to wait for the processing of the trackers. I also think that if this message server is on a different physical server we don't need to wait when the system is not used often due to the asynchronous behavior it should be a continuous server.