2015-06-23 24 views
5

Si tratta di un problema in cui Solr 5.1 sta creando troppi file di registro. Ogni volta che Solr viene riavviato, e periodicamente per tutta la settimana, Solr crea i seguenti file e ho bisogno di fermarsi:Solr 5.1: Solr sta creando troppi file di registro

  1. file del tipo solr_gc_xxxxxxxx_xxxx, dove le X rappresentano la data e una sorta di numero identificativo, rispettivamente. Questi contengono informazioni sulla raccolta dei rifiuti.
  2. I file del tipo solr_log_xxxxxxxx_xxxx, dove la x sta per la data e una sorta di numero identificativo, rispettivamente. Questi contengono lo stesso tipo di informazioni che potresti trovare in solr.log.
  3. Un file del tipo solr- [port] -console.log. Esso contiene sempre solo il testo seguente: WARNING: System properties and/or JVM args set. Consider using --dry-run or --exec

In una settimana ho collezionato quasi trent'anni di file del tipo 1 e 2!

Ancora peggio, i tipi di file 1 e 2 non sembrano rispettare le mie impostazioni log4j.rootlogger e sono pieni di materiale di livello INFO.

Ecco le parti rilevanti del mio file log4j.properties:

# Logging level 
solr.log=logs 
log4j.rootLogger=WARN, file 

#- size rotation with log cleanup. 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.MaxFileSize=100MB 
log4j.appender.file.File=${solr.log}/solr.log 
log4j.appender.file.MaxBackupIndex=0 

Quello che voglio fare è la seguente:

  1. Crea solo solr.log + un file di backup. solr.log dovrebbe essere periodicamente sovrascritto.
  2. Non creare nessun altro file di registro.

Cosa posso fare per realizzare questo?

risposta

7

Quindi, dopo un po 'di tempo, ho capito come risolvere questo problema.

Per riassumere, Solr continuava a creare un intero gruppo di file con i modelli solr_log * e gc_log * all'avvio e periodicamente durante il giorno. Alla fine ho avuto alcuni problemi di spazio abbastanza seri a causa della quantità infinita di registri che Solr amava creare.

Passare a /path/to/solr/bin e individuare lo script solr, che viene eseguito all'avvio. Aprire il file, cercare la seguente, e commentate mv "$SOLR_LOGS_DIR/solr.log" "$SOLR_LOGS_DIR/solr_log_$(date +"%Y%m%d_%H%M")":

# backup the log files before starting 
if [ -f "$SOLR_LOGS_DIR/solr.log" ]; then 
    if $verbose ; then 
    echo "Backing up $SOLR_LOGS_DIR/solr.log" 
    fi 
    mv "$SOLR_LOGS_DIR/solr.log" "$SOLR_LOGS_DIR/solr_log_$(date +"%Y%m%d_%H%M")" 
fi 

o rimuoverlo, se ti piace. Potresti anche provare a non usare la bandiera -f ma qui nel mio negozio ci piace.

Ciò manterrà solr.log, ma Solr non effettuerà altri backup. Se si desidera backup giornalieri, si consiglia di configurare uno TimeBasedRollingPolicy o, meglio ancora, uno DailyRollingFileAppender nel file log4j.properties, che può essere trovato in /path/to/solr/server/resources.

Se lo si desidera, è anche possibile commentare la riga mv per i registri di raccolta dati obsoleti Solr, che lasceranno solo con solr_gc.log.

Se, come me, avete altri modi per monitorare gc per Solr, quindi è necessario disattivare completamente la registrazione gc.

Nella stessa directory dello script solr, aperta solr.in.sh (Mac/Linux solo, penso solr.cmd è per gli utenti Windows) e commenta questa linea: # Enable verbose GC logging GC_LOG_OPTS="-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails \ -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime".

Sarà necessario riavviare Solr.

+2

Se su Windows, disabilitare la registrazione verbose gc nello script * solr.in.cmd * con 'REM'. – dalenewman

+0

@TMBT Grazie per aver capito questo! Se qualcuno del team di sviluppo solR lo legge mai ... per favore vai e correggi i tuoi script di avvio !!! WTF? –