Domanda

Ho fatto un po 'di registrazione dei tempi di creazione oggetto nel processo di conto aperto in produzione. Periodicamente, l'inizializzazione di un oggetto sarebbe voluto così più tempo del previsto. Con l'inizializzazione intendo chiamare è init () e passando un paio di argomenti che possono essere variabili semplici o oggetti. per es.

<cfset validateObj = createObject("component", "compExample").init( 
        productionMode = VARIABLES.productionMode, 
        ipWhiteListed = isWhiteListed, 
        ipLocatorObj = VARIABLES.ipLocatorObj ) />

Questo è tutto quello che accade in init () metodi. Generalmente il tempo di esecuzione sarebbe 0 ms, ma a volte casuali mi potrebbe ottenere 3 o 3,5 secondi. Questo non è specifico per un determinato server o al nostro periodo generalmente occupato. Sembra essere abbastanza casuale.

Un pensiero è stato che questi modelli venivano sfrattati dalla nostra cache del modello in quanto non vengono utilizzate soprattutto di frequente, anche se ho controllato cfstat su un certo numero di server e la massima CP / Sec è -1.

Esecuzione CF 8,0,1

chiunque altro ha mai incontrato questo?

È stato utile?

Soluzione 3

aumentato il numero massimo di elementi nella cache del modello. Come la cache utilizza LRU e questi oggetti sono specifici per funzionalità che non è particolarmente frequente utilizzati stavano ricevendo sfrattati dalla cache. Aggiornato metà dei server e mantenuto la metà della stessa e rispetto dopo il fine settimana. C'era una drastica riduzione dei tempi di istanze di oggetti sui server in cui è stata aumentata la cache.

Altri suggerimenti

Ci può essere qualcosa all'interno di tale metodo init chiama qualcos'altro che potrebbe causare il rallentamento delle prestazioni casuale. Ciò può essere dovuto al modo in cui gli argomenti vengono memorizzati all'interno del CFC con il metodo init.

All'interno del metodo init CFC, è solo:

<cfset variables.productionMode = arguments.productionMode />

o utilizzando un metodo setter come ad esempio:

<cfset setProductionMode(arguments.productionMode) />

Forse una structAppend?

<cfset structAppend(variables, arguments) />

Il primo metodo, solo un insieme straight-up sarebbe meno probabilità di causare problemi. Il secondo metodo, utilizzando un metodo setter, potrebbe rallentare le cose a seconda di ciò che il metodo setter sta facendo, quali altri metodi può essere chiamata, ecc ... Il terzo metodo dovrebbe essere abbastanza consistente ma ho visto structAppend e altre funzioni interne casualmente rallentare per nessun motivo apparente.

Credo che i commenti di John Whish sono sicuramente qualcosa da esaminare. Come pure, c'è qualche quantità dispari di traffico si è verificato su questo server quando il metodo init rallenta?

Hai provato a isolare solo il createObject () chiamata per vedere se è l'esemplificazione oggetto con conseguente rallentamento o se è veramente il metodo init? Generalmente in istanziazione dell'oggetto CF può essere un processo casuale lento. Questo può essere meglio in CF 8 ultimamente ma l'esperienza dice che potrebbe essere il problema.

aggiornare sempre la JVM alla versione più recente e poi vedere se il problema esiste ancora.

Qualche possibilità si sta eseguendo il profiler dal server manager? Questo ci ha causato simile lentezza casuale.

Coppia di pensieri .... Esiste un blocco in corso o le dipendenze su un / webservice / database di rete. Avete avuto alcun controllo o simili in corso (ad esempio AOP)?

Anche la versione CF stai? Sono i server che eseguono gli aggiornamenti .1 (se del caso, vale a dire 8,01).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top