Memorie limită limitată

De ce există o limită de hardcoded chunk (.5 meg după comprimare) în memcached ? A fost recompensat cineva de-al lor? Știu că nu ar trebui să trimit niște bucăți mari de genul ăsta, dar aceste bucăți extra grele se întâmplă pentru mine din când în când și fac rău.

0
fr hi bn

1 răspunsuri

This question used to be in the official FAQ

Care sunt unele limite în memcached S-ar putea lovi? (Machine Wayback)

A cita:

Limitele simple pe care le veți vedea probabil cu memcache sunt cheia și   Limitele dimensiunii articolului. Cheile sunt limitate la 250 de caractere. Datele stocate   nu poate depăși dimensiunea de 1 megabyte, deoarece acesta este cel mai mare tipic   dimensiunea plăcii. "

Întrebările frecvente au fost revizuite și există acum două întrebări separate care acoperă acest aspect:

Care este lungimea cheii maxiumum? (250 octeți)

Dimensiunea maximă a unei taste este de 250 de caractere. Rețineți această valoare va fi   mai puțin dacă utilizați "prefixe" de client sau caracteristici similare, deoarece   prefixul este fixat pe partea din față a cheii inițiale. Sunt mai scurte chei   în general mai bine, deoarece economisesc memoria și utilizează mai puțină lățime de bandă.

De ce sunt articolele limitate la o dimensiune de 1 megabyte?

Ahh, aceasta este o întrebare populară!

     

Răspuns scurt: Din cauza modului în care funcționează algoritmul alocatorului de memorie.

     

Răspuns lung: motorul de memorie Memcached (care va fi   conectabil / ajustat în viitor ...), folosește o abordare cu plăci la memorie   de management. Memoria este împărțită în bucăți de plăci de diferite dimensiuni,   începând de la un număr minim și urcând cu un factorial până la   cea mai mare valoare posibilă.

     

Spuneți că valoarea minimă este de 400 octeți, iar valoarea maximă este de 1   megabyte, iar factorialul este 1,20:

     

plăcuța 1 - 400 octeți slab 2 - 480 bytes slab 3 - 576 octeți ... etc.

     

Cu cât placa este mai mare, cu atât există mai mult spațiu între ea și   placa anterioară. Deci, cu cât este mai mare valoarea maximă, cu atât este mai puțin eficientă   memorie de stocare este. Memcached trebuie, de asemenea, să pre-aloce o anumită memorie pentru   fiecare placă care există, așadar stabilind un factorial mai mic cu un număr mai mare   valoarea maximă va necesita și mai mult cheltuieli generale.

     

Există și alt motiv pentru care nu vrei să faci asta ... Dacă suntem   vorbind despre o pagină web și încercați să stocați / încărcați valori   atât de mare, probabil că faci ceva greșit. La acea dimensiune   ia o cantitate considerabilă de timp pentru a încărca și a despacheta structura de date   în memorie, iar site-ul dvs. nu va funcționa foarte bine.

     

Dacă într-adevăr doriți să stocați elemente mai mari de 1MB, puteți   recompila memcached cu o valoare slabs.c: POWER_BLOCK editată sau folosită   malloc ineficient / backend gratuit. Alte sugestii includ a   baza de date, MogileFS, etc.

0
adăugat