डॉकर पर एसक्यूएल टाइमआउट


मेरे पास परीक्षण निष्पादित हैं जो डॉकर पर होस्ट किए गए SQL डेटाबेस का उपयोग कर रहे हैं। मुझे कुछ परीक्षणों में टाइमआउट समस्याओं का सामना करना पड़ रहा है

var msSqlContainer = new ContainerBuilder()
	.WithImage("mcr.microsoft.com/mssql/server:2017-latest")
	.WithName(Guid.NewGuid().ToString()[..5])
	.WithPortBinding(1433, true)
	.WithEnvironment("ACCEPT_EULA", "Y")
	.WithEnvironment("SQLCMDUSER", "sa")
	.WithEnvironment("MSSQL_SA_PASSWORD", password)
	.WithEnvironment("SQLCMDPASSWORD", password)
	.WithCleanUp(true)
	.WithNetwork(network)
	.WithWaitStrategy(Wait.ForUnixContainer().UntilPortIsAvailable(1433))
	.Build();
await msSqlContainer.StartAsync();

var msSqlPort = msSqlContainer.GetMappedPublicPort(1433);

_databaseConnectionString = $"Server={msSqlContainer.Hostname},{msSqlPort};User Id=sa;Password={password};TrustServerCertificate=true;";
Timeout after 239.3025928 calling database. Caller:get_cust_messages_by_cust Message:Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.

मैंने क्या प्रयास किया है:

मैंने कनेक्शन स्ट्रिंग में ‘कनेक्शन टाइमआउट=60’ जोड़ने का प्रयास किया है

मैं नीचे दी गई क्वेरी का उपयोग करके जांचता हूं कि मेरे पास कितने कनेक्शन हैं, जबकि मेरे पास हमेशा 30 कनेक्शन से कम हैं

SELECT a.*
FROM
(SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
loginame as LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, loginame) a
ORDER BY a.DBName, a.LoginName

समाधान 1

हां, मुझे यकीन है कि डेटाबेस तक पहुंचा जा सकता है। 3000 परीक्षणों में से कुछ एसक्यूएल टाइमआउट के साथ यादृच्छिक रूप से विफल हो रहे हैं।

नीचे वह विधि है जिसका उपयोग मैं डीबी कनेक्शन खोलने के लिए कर रहा हूं

private DbConnection GetDBConnection()
{
    var db = _sqlDBfactory.CreateConnection();
    db!.ConnectionString = _databaseConnectionString + "Initial Catalog=clients;";
    db.Open();
    return db;
}

कॉलिंग उदाहरण:

using var db = GetDBConnection();
try
{
	return db.QueryFirst<string>(
		$"SELECT statment goes here... omitted purposly;
}
finally
{
	db.Close();
}

コメント

タイトルとURLをコピーしました