I have application, which connects to MySQL database. Everything is fine when app runs on Windows Server 2016, but lastly I migrated it to Azure App Service as continous Web Job and I get completely randomly errors:
MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts. --->
MySql.Data.MySqlClient.MySqlException (0x80004005): Timeout expired.
The timeout period elapsed prior to completion of the operation or the server is not responding.
at MySql.Data.Common.StreamCreator.GetTcpStream(MySqlConnectionStringBuilder settings)
at MySql.Data.Common.StreamCreator.GetStream(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at System.Data.Common.DbConnection.OpenAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Dapper.SqlMapper.<ExecuteImplAsync>d__39.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()``
I try to create connection every time when my app retrieves message from queue.
I use Dapper
and piece of my code, which connects to MySQL looks like this:
using (IDbConnection connection = new MySqlConnection(connectionString))
{
return await connection.QueryAsync<Resource>(this._getContactsToSync);
}
MySQL version is 5.5 - quite old, but it's customer external source and I can't do anything with that. I tested three versions of MySQL drivers for .NET (8.0, 6.9, 6.10) - error occurs with every of them.
I found somewhere information, that this situation could be caused by to many open sockets, but I tested app locally with netstat
command and everything looks good.
My issue is similar to this: Random connection problems from Azure C# app to remote MySQL server, but there is'nt any helpful answer.
I've never done anything with MySQL, so I'm not an expert with this tool. Maybe someone has similar situation???