.net - SQL Server query timeout due to load in different DB on same server but different physical disk -


we have 2 separate dbs on same physical server (one big data, 1 runtime data), use separate set of physical disks, same sql server instance.

recently run heavy query in 'big data' database (analysing gigabytes of data) , simple query (from remote .net client on same dedicated lan network rt time in order of nanoseconds; running sp verifying single bit) timed out:

system.data.sqlclient.sqlexception (0x80131904): connection timeout expired. timeout period elapsed while attempting consume pre-login handshake acknowledgement. because pre-login handshake failed or server unable respond in time. duration spent while attempting connect server - [pre-login] initialization=0; handshake=15000;
---> system.componentmodel.win32exception (0x80004005): wait operation timed out
@ system.data.providerbase.dbconnectionpool.trygetconnection(dbconnection owningobject, uint32 waitformultipleobjectstimeout, boolean allowcreate, boolean onlyonecheckconnection, dbconnectionoptions useroptions, dbconnectioninternal& connection)
@ system.data.providerbase.dbconnectionpool.trygetconnection(dbconnection owningobject, taskcompletionsource1 retry, dbconnectionoptions useroptions, dbconnectioninternal& connection)
@ system.data.providerbase.dbconnectionfactory.trygetconnection(dbconnection owningconnection, taskcompletionsource
1 retry, dbconnectionoptions useroptions, dbconnectioninternal& connection)
@ system.data.providerbase.dbconnectionclosed.tryopenconnection(dbconnection outerconnection, dbconnectionfactory connectionfactory, taskcompletionsource1 retry, dbconnectionoptions useroptions)
@ system.data.sqlclient.sqlconnection.tryopen(taskcompletionsource
1 retry)
@ system.data.sqlclient.sqlconnection.open()

is option how separate resources tow databases separate them 2 physical servers? or possible somehow ensure 'runtime' database has small amount of resources available simple queries doesn't timeout?

within single instance of sql server there's not lot can do. can, though, run multiple instances of sql on single physical (or virtual) machine. alone should - if have enough memory, guess. can set max memory each instance use, , if have multiple cores can limit each instance sub-set of cores. example, can set instance 1 (big data) use cores 0, 1 , 2 of 4 core machine, while instance 2 (small data ) can use cores 2 , 3. sill allow big data use 3 cores when needs to, , allows small data have least 1 core available.

setting maximums involves trial , error, really. try , see.

apart that, , putting second instance on different machine simpler, there's not can, think. however, it's worth hard data when have performance problem. pal @ codeplex has set of performance counters many configurations including sql server machine. chomps recorded values , outputs pretty and useful reports might wrong. (due pal found assigning less memory sql instance improved through put on 1 machine! os being starved of memory , swapped out slowed lot of things down.)


Comments

Popular posts from this blog

php - failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request -

java - How to filter a backspace keyboard input -

java - Show Soft Keyboard when EditText Appears -