Cache stampede
કેશ સ્ટેમ્પેડ એ કાસ્કેડિંગ નિષ્ફળતાનો એક પ્રકાર છે જે ત્યારે થઈ શકે છે જ્યારે કેશીંગ મિકેનિઝમ્સ સાથે મોટા પ્રમાણમાં સમાંતર કમ્પ્યુટિંગ સિસ્ટમ્સ ખૂબ ઊંચા ભાર હેઠળ આવે છે. આ વર્તણૂકને કેટલીકવાર ડોગ-પાઇલિંગ પણ કહેવામાં આવે છે. કેશમાં ભાગદોડ કેવી રીતે થાય છે તે સમજવા માટે, એવા વેબ સર્વરનો વિચાર કરો જે સિસ્ટમ લોડને સરળ બનાવવા માટે અમુક સમય માટે કેશ રેન્ડર કરેલા પૃષ્ઠો માટે મેમકચેડનો ઉપયોગ કરે છે. એક જ યુ. આર. એલ. પર ખાસ કરીને વધુ ભાર હેઠળ, જ્યાં સુધી સંસાધન કેશમાં રહે ત્યાં સુધી સિસ્ટમ પ્રતિભાવશીલ રહે છે, વિનંતીઓને કેશ કરેલી નકલને ઍક્સેસ કરીને નિયંત્રિત કરવામાં આવે છે. આ ખર્ચાળ રેન્ડરિંગ કામગીરીને ઘટાડે છે. ઓછા ભાર હેઠળ, કેશ ચૂકી જવાને પરિણામે રેન્ડરિંગ કામગીરીની એક જ પુનઃગણતરી થાય છે. સિસ્ટમ પહેલાની જેમ જ ચાલુ રહેશે, જેમાં ઉચ્ચ કેશ હિટ રેટને કારણે સરેરાશ ભાર ખૂબ ઓછો રાખવામાં આવશે. જો કે, ખૂબ જ ભારે ભાર હેઠળ, જ્યારે તે પૃષ્ઠનું કેશ કરેલું સંસ્કરણ સમાપ્ત થાય છે, ત્યારે સર્વર ફાર્મમાં પૂરતી સુસંગતતા હોઈ શકે છે કે જે અમલના બહુવિધ થ્રેડો તે પૃષ્ઠની સામગ્રીને એક સાથે રેન્ડર કરવાનો પ્રયાસ કરશે. વ્યવસ્થિત રીતે, કોઈ પણ સહવર્તી સર્વરને ખબર નથી કે અન્ય લોકો એક જ સમયે સમાન રેન્ડરિંગ કરી રહ્યા છે. જો પૂરતો ઊંચો ભાર હાજર હોય, તો આ પોતે જ વહેંચાયેલ સંસાધનોને ખતમ કરીને સિસ્ટમની ભીડના પતન માટે પૂરતું હોઈ શકે છે. ભીડના પતનના પરિણામે પૃષ્ઠને સંપૂર્ણપણે ફરીથી પ્રસ્તુત કરવામાં અને ફરીથી કેશ કરવામાં અટકાવવામાં આવે છે, કારણ કે આવું કરવાના દરેક પ્રયાસમાં સમય લાગે છે. આમ, કેશ ભાગદોડ કેશ હિટ રેટને શૂન્ય સુધી ઘટાડે છે અને સિસ્ટમને સતત ભીડના પતનમાં રાખે છે કારણ કે તે જ્યાં સુધી ભાર ખૂબ જ ભારે રહે ત્યાં સુધી સંસાધનને પુનર્જીવિત કરવાનો પ્રયાસ કરે છે. નક્કર ઉદાહરણ આપવા માટે, ધારો કે વિચારણા હેઠળના પૃષ્ઠને રેન્ડર કરવામાં 3 સેકન્ડ લાગે છે અને આપણી પાસે પ્રતિ સેકંડ 10 વિનંતીઓનો ટ્રાફિક છે. પછી, જ્યારે કેશ કરેલું પૃષ્ઠ સમાપ્ત થાય છે, ત્યારે આપણી પાસે 30 પ્રક્રિયાઓ હોય છે જે એક સાથે પૃષ્ઠના રેન્ડરિંગની પુનઃગણતરી કરે છે અને રેન્ડર કરેલા પૃષ્ઠ સાથે કેશને અપડેટ કરે છે. લાક્ષણિક કેશ વપરાશ નીચે આઇટમ માટે એક લાક્ષણિક કેશ વપરાશ પેટર્ન છે જેને સમયના દરેક એકમોમાં અપડેટ કરવાની જરૂર છેઃ ફંક્શન fetch (કી, ટી. ટી. એલ.) {વેલ્યુ-કેશે _ રીડ (કી) જો (! વેલ્યુ) {વેલ્યુ-કેશે _ વેલ્યુ () કેશે _ રાઈટ (કી, વેલ્યુ, ટી. ટી. એલ.)} રીટર્ન વેલ્યુ} જો ફંક્શન લાંબો સમય લે છે અને કીને વારંવાર એક્સેસ કરવામાં આવે છે, તો ઘણી પ્રક્રિયાઓ એકસાથે કેશ વેલ્યુની સમાપ્તિ પર કૉલ કરશે. લાક્ષણિક વેબ એપ્લિકેશન્સમાં, કાર્ય ડેટાબેઝને ક્વેરી કરી શકે છે, અન્ય સેવાઓને ઍક્સેસ કરી શકે છે અથવા કેટલીક જટિલ કામગીરી કરી શકે છે (એટલે જ આ ચોક્કસ ગણતરીને પ્રથમ સ્થાને કેશ કરવામાં આવી રહી છે). જ્યારે વિનંતીનો દર ઊંચો હોય, ત્યારે ડેટાબેઝ (અથવા અન્ય કોઈપણ વહેંચાયેલ સ્રોત) વિનંતીઓ/પ્રશ્નોના ભારણથી પીડાય છે, જે બદલામાં સિસ્ટમના પતનનું કારણ બની શકે છે. કેશ ભાગદોડ શમન કેશ ભાગદોડ ઘટાડવા માટે કેટલાક અભિગમો પ્રસ્તાવિત કરવામાં આવ્યા છે (જેને ડોગપાઇલ નિવારણ તરીકે પણ ઓળખવામાં આવે છે). તેમને આશરે 3 મુખ્ય વર્ગોમાં વર્ગીકૃત કરી શકાય છે. લોકીંગ સમાન મૂલ્યના એક સાથે બહુવિધ પુનઃગણનાને રોકવા માટે, કેશ ચૂકી જવા પર પ્રક્રિયા તે કેશ કી માટે લોક મેળવવાનો પ્રયાસ કરશે અને જો તે તેને પ્રાપ્ત કરે તો જ તેને ફરીથી ગણતરી કરશે. જ્યારે તાળું મેળવવામાં ન આવે ત્યારે કેસ માટે અમલીકરણના વિવિધ વિકલ્પો છેઃ મૂલ્યની પુનઃગણતરી ન થાય ત્યાં સુધી રાહ જુઓ "મળ્યું નથી" પરત કરો અને ક્લાયન્ટને મૂલ્યની ગેરહાજરીને યોગ્ય રીતે હેન્ડલ કરવા માટે કહો નવી કિંમતની પુનઃગણતરી થાય ત્યાં સુધી ઉપયોગમાં લેવા માટે કેશમાં જૂની વસ્તુ રાખો જો યોગ્ય રીતે અમલ કરવામાં આવે તો, તાળું મારવાથી ભાગદોડ સંપૂર્ણપણે અટકાવી શકાય છે, પરંતુ તાળું મારવાની પદ્ધતિ માટે વધારાના લેખનની જરૂર પડે છે. લખાણોની સંખ્યાને બમણી કરવા ઉપરાંત, મુખ્ય ખામી એ લોકીંગ મિકેનિઝમનું સાચું અમલીકરણ છે જે લોક મેળવવાની પ્રક્રિયાની નિષ્ફળતા, લોક માટે ટાઈમ-ટુ-લાઇવ ટ્યુનિંગ, રેસ-શરતો વગેરે સહિત એજ કેસોનું પણ ધ્યાન રાખે છે. બાહ્ય પુનઃગણતરી આ ઉકેલ કેશ મૂલ્યના પુનઃગણતરીને તેની જરૂરી પ્રક્રિયાઓમાંથી બાહ્ય પ્રક્રિયા તરફ ખસેડે છે. બાહ્ય પ્રક્રિયાનું પુનઃગણતરી જુદી જુદી રીતે શરૂ કરી શકાય છેઃ જ્યારે કેશ મૂલ્ય સમયાંતરે તેની સમાપ્તિની નજીક પહોંચે છે જ્યારે મૂલ્યની જરૂર હોય ત્યારે પ્રક્રિયા કેશ ચૂકી જાય છે આ અભિગમ માટે વધુ એક ગતિશીલ ભાગની જરૂર પડે છે-બાહ્ય પ્રક્રિયા-જેને જાળવવાની અને તેનું નિરીક્ષણ કરવાની જરૂર છે. વધુમાં, આ ઉકેલ માટે અકુદરતી કોડ સેપરેશન/ડુપ્લિકેશનની જરૂર છે અને તે મોટે ભાગે સ્થિર કેશ કીઓ માટે યોગ્ય છે (એટલે કે, ગતિશીલ રીતે જનરેટ થતી નથી, જેમ કે આઈડી દ્વારા અનુક્રમિત કીઓના કિસ્સામાં). સંભવિત પ્રારંભિક સમાપ્તિ આ અભિગમ સાથે, દરેક પ્રક્રિયા સ્વતંત્ર સંભવિત નિર્ણય લઈને તેની સમાપ્તિ પહેલાં કેશ મૂલ્યની ફરીથી ગણતરી કરી શકે છે, જ્યાં જેમ જેમ આપણે મૂલ્યની સમાપ્તિની નજીક પહોંચીએ તેમ તેમ પ્રારંભિક પુનઃગણતરી કરવાની સંભાવના વધે છે. સંભવિત નિર્ણય દરેક પ્રક્રિયા દ્વારા સ્વતંત્ર રીતે લેવામાં આવે છે, તેથી ભાગદોડની અસર ઓછી થાય છે કારણ કે એક જ સમયે ઓછી પ્રક્રિયાઓ સમાપ્ત થઈ જશે. ઘાતાંકીય વિતરણ પર આધારિત નીચેનું અમલીકરણ ભાગદોડ અટકાવવામાં તેની અસરકારકતા અને પ્રારંભિક પુનઃગણતરી કેવી રીતે થઈ શકે તેના સંદર્ભમાં શ્રેષ્ઠ હોવાનું દર્શાવવામાં આવ્યું છે. ફંક્શન x-fetch (કી, ટી. ટી. એલ., બીટા = 1) {વેલ્યુ, ડેલ્ટા, એક્સપાયરી | કેશે _ રીડ (કી) જો (! વેલ્યુ | | (ટાઇમ ()-ડેલ્ટા * બીટા * લોગ (રેન્ડ (0,1)) ≤ એક્સપાયરી) {સ્ટાર્ટ | ટાઇમ () વેલ્યુ | રિકમ્પ્યુટ _ વેલ્યુ () ડેલ્ટા | ટાઇમ ()-સ્ટાર્ટ કેશે _ રાઈટ (કી, (વેલ્યુ, ડેલ્ટા), ટી. ટી. એલ.)} રીટર્ન વેલ્યુ} પેરામીટરને 1 કરતા વધારે વેલ્યુ પર સેટ કરી શકાય છે જેથી અગાઉના રિકમ્પ્યુટેશનની તરફેણ કરી શકાય અને ભાગદોડ વધુ ઘટાડી શકાય પરંતુ લેખકો દર્શાવે છે કે સેટિંગ = 1 વ્યવહારમાં સારી રીતે કામ કરે છે. ચલ મૂલ્યની પુનઃગણતરી કરવાના સમયને રજૂ કરે છે અને તેનો ઉપયોગ સંભાવના વિતરણને યોગ્ય રીતે માપવા માટે થાય છે. આ અભિગમ અમલમાં મૂકવા માટે સરળ છે અને જ્યારે ટ્રાફિક દર વધે છે ત્યારે આપમેળે પ્રારંભિક પુનઃગણતરીની તરફેણ કરીને કેશ સ્ટેમ્પેડને અસરકારક રીતે ઘટાડે છે. એક ખામી એ છે કે તે કેશમાં વધુ મેમરી લે છે કારણ કે આપણે કેશ આઇટમ સાથે વેલ્યુ ડેલ્ટાને બંડલ કરવાની જરૂર છે-જ્યારે કેશીંગ સિસ્ટમ કી એક્સપાયરી ટાઇમની પુનઃપ્રાપ્તિને સપોર્ટ કરતી નથી, ત્યારે આપણે બંડલમાં (એટલે કે) સંગ્રહિત કરવાની પણ જરૂર છે. સંદર્ભો બાહ્ય કડીઓ કેશમાં ભાગદોડ ઓછી કરવી, જોશુઆ થિજસેન, 2010 લાક્ષણિક પર્લ કેશ વપરાશ માટે સમસ્યાઓ અને ઉકેલો, જોનાથન સ્વાર્ટઝ, 2008 ઇજનેરી નિષ્ફળતાઓ સમાંતર કમ્પ્યુટિંગ કમ્પ્યુટર ઓપ્ટિમાઇઝેશન કેશ (કમ્પ્યુટિંગ)