i18n keys regularly failing on server

About once a week now we are having to restart our 5.1.4 server because the server will stop displaying the i18n values on every spot they are used in the system, labels, buttons, column headers, etc… What gets put in place is the key name, the same behavior as if we forgot to set a value for a key.
When it happens it affects smart client, web client, and jasper reports all at the same time.

At first I thought it was perhaps losing the db connection, so I upped the connection timeout in mysql to 36 hours, didn’t fix it. Then I was still thinking there was some kind of connection timeout, so I put batch processor in that hit the web client side of our solution every six hours (rather arbitrary number) to try and keep the connection that I assume was dying from dying. That didn’t solve it either.

I’ve tried putting the messages table in it’s own database, and in a table within our main solution, still no resolution.

Has anyone else experienced this and can point me in the direction to fix it?

Where does your i18n tables reside. We experienced this problem when our i18n tables were on a different db server and this server was reset due to maintenance. Everything except the i18n keys keeps working fine on the Servoy application server, even the data connection of the application dbs on the same db server. Our solution was to stop the Servoy application server before db server reset and start it again afterwords.

Hope this helps…

first, do you use a validation query on your connection for the i18n keys db?
Please use that

Also is the pool great enough to be able to handle your max number of concurrent connections from all the users?
Up the max pool size in the db admin page.

We did do a fix for 5.2.2 where if it did go wrong once the messages couldnt be loaded for all the webclients coming after it.
But the above 2 methods should prevent that it does go wrong once…

Where does your i18n tables reside.

I’ve had the table inside the same db as my solution uses for its data, and a separate db just for messages. I saw the issue in both situations, currently it resides in its own DB.

first, do you use a validation query on your connection for the i18n keys db?

I’ve now turned on the ‘SELECT 1’ query validation.

Also is the pool great enough to be able to handle your max number of concurrent connections from all the users?

This I’m not quite sure of. I may have 30 clients connected to my application server, yet the connections says 0/10 or 1/10 on the messages db. I bumped it up to 15, but I’m kind of unclear on how the connection pooling is working here.

Thanks for the advice, I’ll watch it to see how it performs.

connection pooling works like this
at the moment a client (smart or web) does a query, it takes one from the pool if there is 1 idle (if not it will create one)
then if it is done it puts it back into the pool and it keeps idle connections until the max idle count

Besides that you also have a max number of connections that are in use… If that is reached then the next one cant get a connection until another releases one (gives it back as idle)

I think idle of 10 connections is fine for most useage, but do set the max number of connections a bit higher to handle peak connections
What exactly the right thing is is a bit hard to say maybe if you say that you can have max 100 users at the same time
you should have 50 max number of connections and 20 idle…
(so max is users/2 and idle could be users/5)

But this is also a bit depending on your solution, if you use long transactions for example then the max number should be users/1 …

thanks Johan! this is valuable information!

Yes, good to know!
Thank you Johan for the info

Just thought I would post an update for future people that may have had the same issue, the adjustments suggested by Johan seemed to resolved the issue.

Thanks Johan. :)