Increase connect timeouts for capabilities that demand short transfer times.

The automatic adjustment sets the connect time to 3 seconds, which might
be a bit on the short side sometimes.

Also remove the HACK and use CurlTimeoutConnect again.
The default is still 10 seconds, but is overridden to be 30 for mesh
now (which needs a reconnect for every mesh, since LL does not support
connection reuse for mesh). Note that I never saw any successful
connect under 8 seconds while I had the connect time out at 30:
Over 8 seconds is a sure fail (except for mesh, where in rare cases
there were connect times of 15 seconds (never 14 or 16).

On quiet servers, the connect time is normally sub-second. This is
the bulk of connections for my own SL use.
This commit is contained in:
Aleric Inglewood
2013-07-03 23:48:56 +02:00
parent 6ee1bf3fae
commit e0c66138c7
2 changed files with 46 additions and 21 deletions

View File

@@ -677,21 +677,46 @@ AIHTTPTimeoutPolicyBase AIHTTPTimeoutPolicy::sDebugSettingsCurlTimeout(
// Note: All operator objects (Transaction, Connect, etc) must be globals (not temporaries)! // Note: All operator objects (Transaction, Connect, etc) must be globals (not temporaries)!
// To enforce this they are passes as reference to non-const (but will never be changed). // To enforce this they are passes as reference to non-const (but will never be changed).
// This used to be '5 seconds'. // Used for baseCapabilitiesComplete - which is retried many times, and needs to be rather "fast".
Transaction transactionOp5s(5); // Most connection succeed under 5 seconds.
AIHTTPTimeoutPolicyBase transfer_5s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(), Connect connectOp5s(5);
transactionOp5s AIHTTPTimeoutPolicyBase connect_5s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(),
connectOp5s
); );
// This used to be '18 seconds'. // Some services connects rather slow. We need to enforce that connect timeouts never drop below 10 seconds for the policies that shorten the transaction time.
Transaction transactionOp18s(18); Connect connectOp10s(10);
AIHTTPTimeoutPolicyBase transfer_18s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(), AIHTTPTimeoutPolicyBase connect_10s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(),
connectOp10s
);
// The texture/mesh service suffers often from timeouts, give them a much longer connect timeout than normal.
Connect connectOp30s(30);
AIHTTPTimeoutPolicyBase connect_30s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(),
connectOp30s
);
// Extreme measures.
Connect connectOp60s(60);
AIHTTPTimeoutPolicyBase connect_60s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(),
connectOp60s
);
// This used to be '18 seconds'. Pass connectOp5s or it would become 3 seconds (which is working already pretty good actually).
Transaction transactionOp18s(18, connectOp5s);
AIHTTPTimeoutPolicyBase transfer_18s_connect_5s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(),
transactionOp18s transactionOp18s
); );
// This used to be '30 seconds'. // This used to be '18 seconds'. Pass connectOp10s or it would become 3 seconds.
Transaction transactionOp30s(30); Transaction transactionOp22s(22, connectOp10s);
AIHTTPTimeoutPolicyBase transfer_30s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(), AIHTTPTimeoutPolicyBase transfer_22s_connect_10s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(),
transactionOp22s
);
// This used to be '30 seconds'. Pass connectOp10s or it would become 3 seconds.
Transaction transactionOp30s(30, connectOp10s);
AIHTTPTimeoutPolicyBase transfer_30s_connect_10s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(),
transactionOp30s transactionOp30s
); );
@@ -881,7 +906,7 @@ P(asyncConsoleResponder);
P(avatarPickerResponder); P(avatarPickerResponder);
P(authHandler); P(authHandler);
P(avatarNameResponder); P(avatarNameResponder);
P2(baseCapabilitiesComplete, transfer_18s); P2(baseCapabilitiesComplete, transfer_18s_connect_5s);
P(blockingLLSDPost); P(blockingLLSDPost);
P(blockingLLSDGet); P(blockingLLSDGet);
P(blockingRawGet); P(blockingRawGet);
@@ -889,7 +914,7 @@ P(charactersResponder);
P(checkAgentAppearanceServiceResponder); P(checkAgentAppearanceServiceResponder);
P(classifiedStatsResponder); P(classifiedStatsResponder);
P(consoleResponder); P(consoleResponder);
P2(crashLoggerResponder, transfer_5s); P2(crashLoggerResponder, transfer_22s_connect_10s);
P(createInventoryCategoryResponder); P(createInventoryCategoryResponder);
P(emeraldDicDownloader); P(emeraldDicDownloader);
P(environmentApplyResponder); P(environmentApplyResponder);
@@ -902,7 +927,7 @@ P(fetchScriptLimitsRegionDetailsResponder);
P(fetchScriptLimitsRegionInfoResponder); P(fetchScriptLimitsRegionInfoResponder);
P(fetchScriptLimitsRegionSummaryResponder); P(fetchScriptLimitsRegionSummaryResponder);
P(fnPtrResponder); P(fnPtrResponder);
P2(gamingDataReceived, transfer_18s); P2(gamingDataReceived, transfer_22s_connect_10s);
P2(groupMemberDataResponder, transfer_300s); P2(groupMemberDataResponder, transfer_300s);
P2(groupProposalBallotResponder, transfer_300s); P2(groupProposalBallotResponder, transfer_300s);
P(homeLocationResponder); P(homeLocationResponder);
@@ -916,14 +941,14 @@ P(lcl_responder);
P(MPImportGetResponder); P(MPImportGetResponder);
P(MPImportPostResponder); P(MPImportPostResponder);
P(mapLayerResponder); P(mapLayerResponder);
P2(maturityPreferences, transfer_30s); P2(maturityPreferences, transfer_30s_connect_10s);
P(mediaDataClientResponder); P(mediaDataClientResponder);
P(mediaTypeResponder); P(mediaTypeResponder);
P(meshDecompositionResponder); P2(meshDecompositionResponder, connect_30s);
P(meshHeaderResponder); P2(meshHeaderResponder, connect_30s);
P(meshLODResponder); P2(meshLODResponder, connect_30s);
P(meshPhysicsShapeResponder); P2(meshPhysicsShapeResponder, connect_30s);
P(meshSkinInfoResponder); P2(meshSkinInfoResponder, connect_30s);
P(mimeDiscoveryResponder); P(mimeDiscoveryResponder);
P(moderationResponder); P(moderationResponder);
P(navMeshRebakeResponder); P(navMeshRebakeResponder);
@@ -941,7 +966,7 @@ P(requestAgentUpdateAppearance);
P(responderIgnore); P(responderIgnore);
P(sessionInviteResponder); P(sessionInviteResponder);
P(setDisplayNameResponder); P(setDisplayNameResponder);
P2(simulatorFeaturesReceived, transfer_18s); P2(simulatorFeaturesReceived, transfer_22s_connect_10s);
P(startConferenceChatResponder); P(startConferenceChatResponder);
P2(startGroupVoteResponder, transfer_300s); P2(startGroupVoteResponder, transfer_300s);
P(terrainLinksetsResponder); P(terrainLinksetsResponder);

View File

@@ -644,7 +644,7 @@ bool LLAppViewer::init()
AIHTTPTimeoutPolicy policy_tmp( AIHTTPTimeoutPolicy policy_tmp(
"CurlTimeout* Debug Settings", "CurlTimeout* Debug Settings",
gSavedSettings.getU32("CurlTimeoutDNSLookup"), gSavedSettings.getU32("CurlTimeoutDNSLookup"),
/*gSavedSettings.getU32("CurlTimeoutConnect") Temporary HACK: 30 is the current max*/ 30, gSavedSettings.getU32("CurlTimeoutConnect"),
gSavedSettings.getU32("CurlTimeoutReplyDelay"), gSavedSettings.getU32("CurlTimeoutReplyDelay"),
gSavedSettings.getU32("CurlTimeoutLowSpeedTime"), gSavedSettings.getU32("CurlTimeoutLowSpeedTime"),
gSavedSettings.getU32("CurlTimeoutLowSpeedLimit"), gSavedSettings.getU32("CurlTimeoutLowSpeedLimit"),