java coldfusion jvm spreadsheet

java - SpreadsheetAddRows falla en consultas de tamaño moderado



coldfusion jvm (1)

Mi respuesta yace en coldfusion y en un hecho simple: NO USE SpreadsheetAddRows ni ninguna de esas funciones relacionadas como SpreadsheetFormatRows

Mi solución a esto fue ejecutar la consulta, crear un archivo xls, usar la etiqueta cfspreadsheet para escribir en el archivo xls recién creado, luego servir en el navegador, eliminar después de servir

Usando SpreadsheetAddRows, Runtime pasó de bloquear el servidor en más de 1000 filas, más de 5 minutos en 700 filas Usando el método descrito anteriormente 1-1.5 segundos

si está interesado en más código, puedo proporcionar solo comentarios, estoy usando el marco de Coldbox, así que no creo que la especificidad ayudaría solo al nuevo flujo de trabajo

Editar: he cambiado el nombre ya que hay una pregunta similar. ¿ Cómo puedo arreglar la falla de la función SpreadSheetAddRows cuando agrego una consulta grande? por ahí que describe mi problema así que pharased más sucintamente ... el problema es hoja de cálculoAddrows para mi resultado bomba bombardea todo el servidor en lo que considero un tamaño moderado (1600 filas, 27 columnas) pero suena bastante menos que sus 18,000 filas

Estoy utilizando un procedimiento almacenado de Oracle a través de coldfusion 9.0.1 cfstoredproc que al finalizar crea una hoja de cálculo para que el usuario descargue

El problema es que los conjuntos de resultados mayores que, por ejemplo, 1200 filas devuelven un error de 500 servidores internos, 700 filas vuelven bien, entonces supongo que es un problema de memoria.

el único mensaje que recibí aparte de 500 Error interno del servidor en el aspecto estándar de ColdFusion era en letra pequeña "se excedió el límite de gastos generales de gc" y eso fue solo una vez en una actualización de página, que se refiere a la Java JVM subyacente

Ni siquiera estoy seguro de cómo diagnosticar esto

aquí está el final del cfstoredproc y la hoja de cálculo obj

<!--- variables assigned correctly above ---> <cfprocresult name="RC1"> </cfstoredproc> <cfset sObj = spreadsheetNew("reconcile","yes")> <cfset SpreadsheetAddRow(sObj, "Column_1, ... , Column27")> <cfset SpreadsheetFormatRow(sObj, {bold=TRUE, alignment="center"}, 1)> <cfset spreadsheetAddRows(sObj, RC1)> <cfheader name="content-disposition" value="attachment; filename=report_#Dateformat(NOW(),"MMDDYYYY")#.xlsx"> <cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" variable="#spreadsheetReadBinary(sObj)#">