Sağlanan şey yeniden kurtarmak değil
Tamam, başarılı bir şekilde Sağlanan dağıtmış oldum, ve her şey web sitesinde zaman zaman bir istisna gelmeye başlayana kadar güzelce çalışıyordu:
Deneyin < ERRCA0017 >:Alt durum &; ES0007 >lt Geçici bir arıza var. Daha sonra yeniden deneyin lütfen. (İstek sunucu olduğu için başarısız oldu devlet daraltılmış.)
İlk başta sunucu bellek (daraltılmış devlet) üzerinde çalışan olduğunu tahmin ettiğim, ama sorun değildi sonunda tamamlandı. Olay günlüğü, distributedcacheservice.exe her şimdi ve sonra çöktü buldum ve yeniden üreten yerel geliştirme ortamı: hata basit bir yöntem götürdü
- Web sitesi başlatmak, önbelleği için bir kaç şey eklemek.
- “AppFabric Önbelleğe Alma Hizmeti” Yeniden Başlatın.
- ... ve hata almaya başlıyorum.
Eğer hizmeti yeniden başlatmadan ÖNCE Get-CacheClusterHealth
yaparsam, şöyle bir şey:
NamedCache = MyCacheName
Healthy = 100,00
UnderReconfiguration = 0,00
NotPrimary = 0,00
NoWriteQuorum = 0,00
Throttled = 0,00
Yeniden başlatmadan sonra:
Unallocated named cache fractions
---------------------------------
NamedCache = MyCacheName
Unallocated fraction = 100,00
Get-CacheClusterHealth
, sonucunda da site başarısız olur. Anladığım kadarıyla, bir süre (10 dakika) sonra kendi kendini düzeltir.
Sağlanan kendi ayakları üzerinde geri almak için daha hızlı bir yolu var mı?
CEVAP
Kısa cevap hayır.
Bir küme yeniden başlatmak için gereken süreyi bana zaman alır düğüm senkronizasyon bir süreç olduğuna inandırır ekstra düğüm eklemek artar.
Dışında gördüğün gerçekten de sağlanan düğüm daraltılmış bir devlet giriyor. Düğümde yüksek/düşük filigran ayarlamak nasıl bağlı olarak kısıtlanmış durumuna girer. Varsayılan olarak yüksek su işareti öğeleri önbellek ayarlanan tahliye politikasına depnding tahliye başlayacak bu saatten sonra �'ı bence. Genellikle LRU (En son kullanılan) kullanmanız gerekir ama eğer önbellek hala sınırları içinde çalıştıramazsınız eğer sunucunuz aşağı getirmek için kendisi gaz.
Uygulamanız eğer bu tür olayları düzgün bir şekilde işlemek eğer yararlı olacaktır. Eğer tüm düğümler küme config listelenen uygulamasından sonra Eğer uygulama hakkında bilgi toplamak için bir sonraki denemede bir sonraki düğüme hareket etmeliyiz. Bir döngü, geçici başarısızlık arayan ve 3 defa yeniden yeniden kullanıyoruz. Eğer 3 kere sonra hata devam ederse ve boş bir exeption değil günlük dönüş. Bu uygulama, farklı bir düğüm erişme veya sorun zaman kurtarmak için düğüm girişimi için izin verir:
private object WithRetry(Func<object> method)
{
int tryCount = 0;
bool done = false;
object result = null;
do
{
try
{
result = method();
done = true;
}
catch (DataCacheException ex)
{
if (ex.ErrorCode == DataCacheErrorCode.KeyDoesNotExist)
{
done = true;
}
else if ((ex.ErrorCode == DataCacheErrorCode.Timeout ||
ex.ErrorCode == DataCacheErrorCode.RetryLater ||
ex.ErrorCode == DataCacheErrorCode.ConnectionTerminated)
&& tryCount < MaxTryCount)
{
tryCount ;
LogRetryException(ex, tryCount);
}
else
{
LogException(ex);
done = true;
}
}
}
while (!done);
return result;
}
Ve bize şu: yapmanızı sağlar
private void AF_Put(string key, object value)
{
WithRetry(() => defaultCache.Put(key, value));
}
ya da:
private object AF_Get(string key)
{
return WithRetry(() => defaultCache.Get(key));
}
GLSurfaceView parçası içinde yeniden i...
Prosedür sağlanan değil parametre bekl...
Android Studio tarafından sağlanan jav...
yeniden heroku web sitesi,'buldu ...
Proje dosyasını yeniden veya bilgisaya...