Hi all
I am hoping this mail finds all well.
I have a question about mysql open tables and open_table_cache which I do
not seem to be finding the answer to on the internet.
We are busy investigating an issue on a server where we have erattic
behaviour.
During the times when it experiences issues, I found that there is always
about 4-5 processes on mysql that gets stuck on "closing table" state and once
the software (opensips) is restarted due to a sigfault, then these queries are
killed as well.
Based on information found we added grafana graphs and did notice that
the table_open_cache is fully used during the time of the sigfaults and the
queries getting stuck so we tested by increasing the table_open_cache.
This did however not resolve the issue as we simply saw table_open_cache
using the full value of 3000 and once again the same behaviour.
When running "Show open tables" though, we find that the amount of open
tables is only 283 and a count of all tables returned that there is only 381
tables on the server.
However when running "Show global status like 'open_tables' we get a value
of 2900.
So my questions are as follows :
1. Why is the table_open_cache used up if there are not even that many
tables.
2. Why does these values differ so much? or do they provide different info.
3. What other reasons can there be for a query to get stuck on "closing
table" state.
From what I could see , the moment the queries get stuck in this state, the
load on the server increases to more than the amount of cores available and
that is then when the opensips software errors out with a sigfault complaining
about mysql being unavailable.
Any suggestions would be greatly appreciated.
Regards