Hey guys, up to this point I've been installing a separate instance of MySQL Community Server on each full-box machine I rent from NFO. Having a single, and maybe even two machines works ok with this setup, but eventually I think it's best to use a dedicated MySQL machine. So, I rented a 4-core VDS a few days ago to do just that. I removed the database servers from each of my machines, and now rely upon that single db server for each of my game servers. Problem is, every once in a while the Arma2NETMySQL extension will fail (timeout?), and never recover. It seems that the request will timeout, but then the extension can never rebound from this error. The individual game server ends up broken until a full restart. Here's the error log. Any ideas?
Warning: 03:14:29 - MySQL error. MySql.Data.MySqlClient.MySqlException (0x80004005): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.TimeoutException: Timeout in IO operation
at MySql.Data.MySqlClient.TimedStream.StopTimer()
at MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count)
at MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
at MySql.Data.MySqlClient.MySqlStream.LoadPacket()
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.ExceptionInterceptor.Throw(Exception exception)
at MySql.Data.MySqlClient.MySqlConnection.Throw(Exception ex)
at MySql.Data.MySqlClient.MySqlConnection.HandleTimeoutOrThreadAbort(Exception ex)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
at Arma2NETMySQLPlugin.MySQL.RunOnDatabase(MySqlCommand command, Int32 maxResultSize)
Where is the Arma server in relation to the mysql server? I do know that mysql doesn't handle latency well and when it's added to the mix it can cause some weird problems.
@Kraze^NFo> Juski has a very valid point
@Juski> Got my new signature, thanks!
@Kraze^NFo> Out of context!
@Juski> Doesn't matter!
@Juski> You said I had a valid point! You can't take it back now! It's out there!
Both in Dallas. Both hosted by NFO. Game server is a full-box dedi, MySQL server is a 4-core VDS. From what it looks like, everything goes fine until there's a minor hiccup in latency, at which point the extension crashes and cannot reconnect without a game server restart. Any ideas? Would this be a MySQL issue, an ArmA (or Arma2NET extension) issue, or a networking/hosting issue?
EDIT: My knowledge isn't too technically sound when it comes to ip addresses and such, but both servers are even on the same subnet.
I know people have had great success before with using external database servers, and I think that's quite often the setup when renting out a managed server elsewhere. It's certainly more ideal from an organizational and management standpoint to have each dedicated machine focus on its game servers and use a central, dedicated database server, rather than host a MySQL instance on every single machine. Do they need to be on the same LAN? Is this something NFO can setup for me if I have several machines in a single location?