additional-information
ERDDAP™- Impostare il proprioERDDAP™
Cose da sapere
Errori proxy
A volte, una richiesta diERDDAP™restituirà un errore proxy, un errore HTTP 502 Bad Gateway, o qualche errore simile. Questi errori sono stati gettati da Apache o Tomcat, nonERDDAP™stesso.
- Se ogni richiesta genera questi errori, soprattutto quando si sta prima impostando ilERDDAP™, allora probabilmente è un errore proxy o gateway cattivo, e la soluzione è probabilmente per risolvereERDDAPImpostazioni proxy. Questo può anche essere il problema quando un stabilitoERDDAP™improvvisamente inizia a lanciare questi errori per ogni richiesta.
- Altrimenti, gli errori "proxy" di solito sono errori di time out lanciati da Apache o Tomcat. Anche quando si verificano relativamente rapidamente, è una sorta di risposta da Apache o Tomcat che si verifica quandoERDDAP™è molto occupato, limitato alla memoria, o limitato da qualche altra risorsa. In questi casi, vedere i consigli qui sotto per affrontareERDDAP™rispondere lentamente.
Richieste per un lungo periodo di tempo (> 30 punti) da un dataset grigliato sono inclini a guasti time out, che spesso appaiono come errori proxy, perché ci vuole tempo significativo perERDDAP™per aprire tutti i file di dati uno per uno. SeERDDAP™è altrimenti occupato durante la richiesta, il problema è più probabile che accada. Se i file del dataset sono compressi, il problema è più probabile che si verifichi, anche se è difficile per un utente determinare se i file di un dataset sono compressi. La soluzione è quella di fare diverse richieste, ognuna con un range di tempo più piccolo. Quanto è piccolo di un intervallo di tempo? Suggerisco di iniziare davvero piccolo (- 30 punti di tempo?) Allora (circa) raddoppiare l'intervallo di tempo fino a quando la richiesta non fallisce, quindi tornare indietro un raddoppio. Quindi fare tutte le richieste (ciascuno per un pezzo diverso di tempo) necessario per ottenere tutti i dati. AnERDDAP™l'amministratore può ridurre questo problema aumentandoImpostazioni timeout Apache.
Monitoraggio
Tutti vogliamo che i nostri servizi di dati trovino il loro pubblico e vengano ampiamente utilizzati, ma a volte il vostroERDDAP™può essere utilizzato troppo, causando problemi, comprese le risposte super lente per tutte le richieste. Il nostro piano per evitare problemi è:
- MonitoraggioERDDAP™via ilstato.html pagina web. Ha tonnellate di informazioni utili. Se si vede che un numero enorme di richieste sono in arrivo, o tonnellate di memoria in uso, o tonnellate di richieste fallite, o ogni Major LoadDatasets sta prendendo molto tempo, o vedere qualsiasi segno di cose che vengono impantanati e rispondere lentamente, quindi guardare inERDDAP'file log.txtper vedere cosa sta succedendo.
È anche utile notare semplicemente quanto velocemente la pagina di stato risponde. Se risponde lentamente, questo è un indicatore importante cheERDDAP™è molto occupato.
- MonitoraggioERDDAP™via ilRapporto giornalieroemail.
- Guarda i dataset non aggiornati tramite i di base /erddap/outOfDateDatasets.htmlpagina web che si basa sull'opzionaletestOutOfDateattributo globale.
Monitor esterni
I metodi sopra elencati sonoERDDAP's modi di monitorare se stesso. È anche possibile effettuare o utilizzare sistemi esterni per monitorare il vostroERDDAP. Un progetto per farlo èIl progetto erddap-metrico di Axiom. Tali sistemi esterni hanno alcuni vantaggi:
- Possono essere personalizzati per fornire le informazioni desiderate, visualizzate nel modo desiderato.
- Possono includere informazioni suERDDAP™cheERDDAP™non può accedere facilmente o a tutti (ad esempio, utilizzo della CPU, spazio libero del disco,ERDDAP™tempo di risposta come visto dalla prospettiva dell'utente,ERDDAP™uptime,
- Possono fornire avvisi (e-mail, telefonate, testi) agli amministratori quando i problemi superano una certa soglia.
Multiple Simultaneous Richieste
- Utenti Blacklist che fanno più richieste simultanea! Se è chiaro che alcuni utenti stanno facendo più di una richiesta simultanea, ripetutamente e continuamente, quindi aggiungere il loro indirizzo IP aERDDAP#<richiestaBlacklist> (/docs/server-admin/datasets#requestblacklist) nel tuodatasets.xmlfile. A volte le richieste sono tutte da un indirizzo IP. A volte sono da più indirizzi IP, ma chiaramente lo stesso utente. È inoltre possibile blacklist persone che fanno tonnellate di richieste non valide o tonnellate di domande senza cervello.
Poi, per ogni richiesta che fanno,ERDDAP™ritorna:
HTTP ERROR 403 - Access Forbidden --
Your IP address is on this ERDDAP's request blacklist.
Did you often submit more than one request at a time?
Did you often submit identical requests in a short period of time?
Did you submit a large number of invalid requests?
If you are ready to avoid these problems, please email \[ERDDAP™ administrator's email address\] to request to be taken off of the blacklist.
Speriamo che l'utente vedrà questo messaggio e contattarti per scoprire come risolvere il problema e scendere dalla lista nera. A volte, passano gli indirizzi IP e riprovano.
È come l'equilibrio del potere tra armi offensive e difensive in guerra. Qui, le armi difensive (ERDDAP) hanno una capacità fissa, limitata dal numero di core nella CPU, dalla larghezza di banda di accesso al disco e dalla larghezza di banda di rete. Ma le armi offensive (utenti, in particolare script) hanno una capacità illimitata:
- Una singola richiesta di dati da un sacco di punti di tempo può causareERDDAPper aprire un numero enorme di file (in sequenza o parzialmente multi-threaded) . In casi estremi, una richiesta "semplice" può facilmente legare la RAID allegataERDDAP™per un minuto, bloccando efficacemente la gestione di altre richieste.
- Una sola richiesta può consumare un grande pezzo di memoria (anche seERDDAP™è codificato per minimizzare la memoria necessaria per gestire grandi richieste) .
- Parallelizzazione - No. È facile per un utente intelligente parallelizzare un grande compito generando un sacco di fili, ognuno dei quali presenta una richiesta separata (che possono essere grandi o piccole) . Questo comportamento è incoraggiato dalla comunità informatica come un modo efficiente per affrontare un grosso problema (e parallelizzare è efficiente in altre circostanze) . Tornando all'analogia di guerra: gli utenti possono fare un numero sostanzialmente illimitato di richieste simultanee con il costo di ogni essere essenzialmente zero, ma il costo di ogni richiesta entra inERDDAP™può essere grande eERDDAPLa capacità di risposta è finita. Chiaramente,ERDDAP™perderà questa battaglia, a meno che laERDDAP™amministratori blacklist utenti che stanno facendo più richieste simultanee che sono ingiustamente affollare altri utenti.
- Script multipli - Ora pensare a cosa succede quando ci sono diversi utenti intelligenti ogni esecuzione di script parallelizzati. Se un utente può generare così tante richieste che altri utenti sono affollati fuori, quindi più utenti possono generare così tante richieste cheERDDAP™diventa sopraffatto e apparentemente non rispondente. È effettivamente unDDOS attaccoAncora, l'unica difesa perERDDAP™è agli utenti di blacklist che fanno più richieste simultanee che sono ingiustamente affollano altri utenti.
- Aspetti gonfiati - In questo mondo di grandi aziende tecnologiche (Amazon, Google, Facebook, ...) , gli utenti sono venuti ad aspettarsi capacità essenzialmente illimitate dai fornitori. Poiché queste aziende sono operazioni di fare soldi, più utenti hanno, più entrate devono espandere la loro infrastruttura IT. Così possono permettersi una massiccia infrastruttura IT per gestire le richieste. E limitano abilmente il numero di richieste e costi di ogni richiesta da parte degli utenti limitando i tipi di richieste che gli utenti possono fare in modo che nessuna singola richiesta sia gravosa, e non c'è mai una ragione (o un modo) per gli utenti di effettuare più richieste simultanea. Così queste grandi aziende tecnologiche possono avere molto più utenti cheERDDAP™, ma hanno enormemente più risorse e modi intelligenti per limitare le richieste da ogni utente. È una situazione gestibile per le grandi aziende IT (e diventano ricchi!) ma non perERDDAP™impianti. Ancora, l'unica difesa perERDDAP™è agli utenti di blacklist che fanno più richieste simultanee che sono ingiustamente affollano altri utenti.
Quindi gli utenti: Non fare più richieste simultanee o sarete lista nera!
Chiaramente, è meglio se il server ha un sacco di core, un sacco di memoria (in modo da poter allocare un sacco di memoria aERDDAP™più di quanto abbia mai bisogno) , e una connessione internet ad alta larghezza di banda. Poi, la memoria è raramente o mai un fattore limitante, ma la larghezza di banda di rete diventa il fattore limitante più comune. Fondamentalmente, poiché ci sono sempre più richieste simultanee, la velocità a qualsiasi dato utente diminuisce. Questo rallenta naturalmente il numero di richieste in arrivo se ogni utente sta solo inviando una richiesta alla volta.
ERDDAP™Ottenere dati da THREDDS
Se il tuoERDDAP™ottiene alcuni dei suoi dati da un THREDDS sul tuo sito, ci sono alcuni vantaggi per fare una copia dei file di dati THREDDS (almeno per i dataset più popolari) su un altro RAID cheERDDAP™ha accesso a così cheERDDAP™può servire i dati dai file direttamente. AERD, lo facciamo per i nostri dataset più popolari.
- ERDDAP™può ottenere i dati direttamente e non devono aspettare THREDDS per ricaricare il dataset o...
- ERDDAP™può notare e incorporare i nuovi file di dati immediatamente, in modo da non dover pisciare spesso THREDDS per vedere se il dataset è cambiato. Vedi<AggiornamentoOgniNMillis> (/docs/server-admin/datasets#updateeverynmillis) .
- Il carico è diviso tra 2 server RAIDS e 2 server, invece della richiesta è difficile su entrambiERDDAP™e THREDDS.
- Si evita il problema sbagliato causato da THREDDS che ha un piccolo (per impostazione predefinita) dimensione massima richiesta.ERDDAP™ha un sistema per gestire l'errore, ma evitare il problema è migliore.
- Hai una copia di backup dei dati che è sempre una buona idea.
In ogni caso, non eseguire THREDDS eERDDAP™nello stesso Tomcat. Eseguili in Tomcats separati, o meglio, su server separati.
Troviamo che il THREDDS viene periodicamente in uno stato in cui le richieste solo appendere. Se il tuoERDDAP™sta ottenendo dati da un THREDDS e il THREDDS è in questo stato,ERDDAP™ha una difesa (dice che il dataset basato su THREDDS non è disponibile) , ma è ancora fastidioso perERDDAP™perchéERDDAP™deve aspettare fino al timeout ogni volta che cerca di ricaricare un dataset da un THREDDS appeso. Alcuni gruppi (inclusoERD) evitare questo riavviando proattivamente THREDDS frequentemente (ad esempio, di notte in un lavoro di cron) .
Rispondere lentamente
- SeERDDAP™La risposta è lenta o se solo alcune richieste stanno rispondendo lentamente, si può essere in grado di capire se la lentezza è ragionevole e temporanea (ad esempio, a causa di un sacco di richieste da script oWMSutenti) , o se qualcosa è inspiegabilmente sbagliato e è necessariospegnere e riavviare Tomcat eERDDAP™.
SeERDDAP™sta rispondendo lentamente, vedere il consiglio qui sotto per determinare la causa, che si spera vi permetterà di risolvere il problema. Si può avere un punto di partenza specifico (ad esempio, un URL di richiesta specifica) o un punto di partenza vago (ad esempio,ERDDAP™è lento) . È possibile conoscere l'utente coinvolto (ad esempio, perché ti hanno mandato via email) o no. Potresti avere altri indizi, o no. Poiché tutte queste situazioni e tutte le possibili cause dei problemi smussano insieme, il consiglio qui sotto cerca di affrontare tutti i possibili punti di partenza e tutti i possibili problemi legati alle risposte lente.
- Cerca indizi inERDDAPIl file di registro ( BigParentDirectory /logs/log.txt) .
\[In rare occasioni, ci sono indizi inIl file di registro di Tomcat ( tomcat /logs/catalina.out) .\]
Cerca messaggi di errore. Cercare un gran numero di richieste provenienti da uno (o pochi) utenti e forse scavando un sacco di risorse del server (memoria, tempo della CPU, accesso al disco, larghezza di banda internet) .
Se il problema è legato a un utente , si può spesso ottenere un indizio su chi l'utente è tramite servizi web come https://whatismyipaddress.com/ip-lookup che può darvi informazioni relative all'indirizzo IP dell'utente (che puoi trovare inERDDAP'log.txtfile) .
- Se l'utente sembra essere un bot essere comportato male (in particolare, un motore di ricerca che cerca di riempireERDDAP™forme con ogni possibile permutazione dei valori di entrata) , assicurarsi di aver impostato correttamente il serverrobot.txtfile.
- Se l'utente sembra essere un **script script (#) ** che sta facendo più richieste simultanee, contattare l'utente, spiegare che ilERDDAP™ha risorse limitate (ad esempio, memoria, ora della CPU, accesso al disco, larghezza di banda internet) , e chiedere loro di essere premuroso di altri utenti e solo fare una richiesta alla volta. Si potrebbe anche dire che li blacklist se non si allontanano.
- Se l'utente sembra essere un script script fare un gran numero di richieste che richiedono tempo, chiedere all'utente di essere premuroso di altri utenti mettendo una piccola pausa (Due secondi?) nello script tra le richieste.
- WMSsoftware client può essere molto esigente. Un cliente spesso chiederà 6 immagini personalizzate alla volta. Se l'utente sembra essere unWMScliente che sta facendo richieste legittime, è possibile:
- Ignoralo. (raccomandato, perché si muoveranno presto)
- Spegni il serverWMSservizio tramiteERDDAPIl file setup.html. (non raccomandato)
- Se le richieste sembrano stupido, pazzo, eccessivo o maligno, o se non è possibile risolvere il problema in altro modo, considerare temporaneamente o permanentemente l'aggiunta dell'indirizzo IP dell'utente al [<richiestaBlacklist> nel tuodatasets.xmlfile] (/docs/server-admin/datasets#requestblacklist) .
- Prova a duplicare il problema da solo, dal tuo computer.
Scopri se il problema è con un dataset o tutti i dataset, per un utente o tutti gli utenti, per alcuni tipi di richieste, ecc. Se è possibile duplicare il problema, cercare di restringere il problema. Se non è possibile duplicare il problema, allora il problema può essere legato al computer dell'utente, alla connessione internet dell'utente, o alla connessione internet della vostra istituzione. - Se solo un dataset sta rispondendo lentamente (forse solo per un tipo di richiesta da un utente) , il problema può essere:
- ERDDAP'l'accesso ai dati sorgente del dataset (in particolare da database relazionali, Cassandra e dataset remoti) può essere temporaneamente o permanentemente lento. Prova a controllare la velocità della fonte indipendente daERDDAP. Se è lento, forse si può migliorare.
- Il problema riguarda la specifica richiesta o il tipo di richiesta generale? Più grande è il sottoinsieme richiesto di un dataset, più è probabile che la richiesta fallisca. Se l'utente sta facendo richieste enormi, chiedere all'utente di fare richieste più piccole che sono più probabilità di ottenere una risposta veloce e di successo.
Quasi tutti i set di dati sono meglio nel gestire alcuni tipi di richieste rispetto ad altri tipi di richieste. Ad esempio, quando un dataset memorizza blocchi di tempo diversi in diversi file, le richieste di dati da un numero enorme di punti di tempo possono essere molto lente. Se le richieste attuali sono di tipo difficile, considerare di offrire una variante del dataset ottimizzata per queste richieste. O semplicemente spiegare all'utente che quel tipo di richiesta è difficile e richiede tempo, e chiedere la loro pazienza.
-
Il dataset potrebbe non essere configurato in modo ottimale. Potrebbe essere possibile apportare modifiche al datasetdatasets.xmlchunk per aiutareERDDAP™gestire meglio il dataset. Per esempio,
- EDDGridDai dataset NcFiles che i dati di accesso dai file nc4/hdf5 compressi sono lenti quando si ottengono i dati per l'intera gamma geografica (per esempio, per una mappa del mondo) perché l'intero file deve essere decompresso. Si potrebbe convertire i file in file non compressi, ma poi il requisito spazio disco sarà molto, molto più grande. È probabilmente meglio accettare che tali set di dati saranno lenti in determinate circostanze.
- La configurazione del [<subsetVariables> (/docs/server-admin/datasets#subsetvariables) tag ha una grande influenza su comeERDDAP™gestisce i set di dati EDDTable.
- Si può essere in grado di aumentare ilvelocità di un EDDTableFromDatabaseDataset.
- Molti set di dati EDDTable possono essere sped up damemorizzazione di una copia dei dati inNetCDFFile di Array Ragged ContiguouscheERDDAP™può leggere molto rapidamente.
Se si desidera aiutare a velocizzare un set di dati specifico, includere una descrizione del problema e il pezzo di datasetdatasets.xmle vedere il nostrosezione per ottenere supporto aggiuntivo.
- Se tutto inERDDAP™è sempre lento, il problema può essere:
- Il computer in esecuzioneERDDAP™può non avere abbastanza memoria o potenza di elaborazione. È bello correreERDDAP™su un server moderno e multi-core. Per un uso pesante, il server dovrebbe avere un sistema operativo a 64 bit e 8 GB o più di memoria.
- Il computer in esecuzioneERDDAP™può anche eseguire altre applicazioni che stanno consumando un sacco di risorse di sistema. Se è così, è possibile ottenere un server dedicato perERDDAP? Per esempio (questo non è un'approvazione) , è possibile ottenere un quad-core Mac Mini Server con 8 GB di memoria per ~$1100.
- Se tutto inERDDAP™è temporaneamente lento, visualizzare ilERDDAP' /erddap/status.htmlpagina nel tuo browser.
- Fa ilERDDAP™pagina di stato non riesce a caricare? Se è così,riavvioERDDAP™.
- L'ho fattoERDDAP™stato pagina carico lentamente (ad esempio, >5 secondi) ? Questo è un segno che tuttoERDDAP™sta correndo lentamente, ma non è necessariamente un problema.ERDDAP™Potrebbe essere molto impegnato.
- Per "Risponsa il Tempo Non Risponso (dall'ultima maggiore LoadDatasets) ", è n= un gran numero? Ciò indica che ci sono state molte richieste fallite di recente. Potrebbe essere un problema o l'inizio dei problemi. Il tempo mediano per i guasti è spesso grande (ad esempio, 210000 ms) ♪ che significa che c'erano (Davvero?) molti thread attivi. che stavano legando un sacco di risorse (come memoria, file aperti, prese aperte, ...) ♪ che non è buono.
- Per "Risponsa Tempo Accade (dall'ultima maggiore LoadDatasets) ", è n= un gran numero? Ciò indica che ci sono state un sacco di richieste di successo di recente. Non è un problema. Significa solo il tuoERDDAP™sta diventando pesante.
- Il "Numero di fili non-Tomcat" raddoppia un valore tipico? Questo è spesso grave problema che causeràERDDAP™rallentare e alla fine congelare. Se questo persiste per ore, si può desiderare proattivamenteriavvioERDDAP™.
- Nella parte inferiore dell'elenco "Memory Use Summary", è l'ultimo valore "Memory: attualmente utilizzando" molto alto? Questo può solo indicare l'uso elevato, o può essere un segno di problemi.
- Guarda la lista dei filetti e il loro stato. Un numero insolito di loro sta facendo qualcosa di insolito?
- È connessione internet della vostra istituzione Attualmente lento? Cercare internet per "internet speed test" e utilizzare uno dei test online gratuiti, come https://www.speakeasy.net/speedtest/ . Se la connessione internet della vostra istituzione è lenta, allora i collegamenti traERDDAP™e le fonti di dati remote saranno lente e le connessioni traERDDAP™e l'utente sarà lento. A volte, è possibile risolvere questo problema fermando uso di internet non necessario (ad esempio, le persone che guardano i video in streaming o le videochiamate) .
- È connessione internet dell'utente Attualmente lento? Fai cercare l'utente su internet per "internet speed test" e usa uno dei test online gratuiti, come https://www.speakeasy.net/speedtest/ . Se la connessione internet dell'utente è lenta, rallenta il loro accesso aERDDAP. A volte, possono risolvere questo problema bloccando l'uso di Internet non necessario alla loro istituzione (ad esempio, le persone che guardano i video in streaming o le videochiamate) .
- Stuck?
Guarda la nostrasezione per ottenere supporto aggiuntivo.
Zitto e riavvia
- Come chiudere e riavviare Tomcat eERDDAP™
Non c'è bisogno di chiudere e riavviare Tomcat eERDDAPseERDDAP™è temporaneamente lento, lento per qualche ragione conosciuta (come un sacco di richieste da script oWMSutenti) , o per applicare le modifichedatasets.xmlfile.
Devi chiudere e riavviare Tomcat eERDDAP™se è necessario applicare le modifiche al file setup.xml, o seERDDAP™blocca, blocca o blocca. In circostanze estreme,Javapuò congelare per un minuto o due mentre fa una collezione di spazzatura completa, ma poi recuperare. Quindi è bene aspettare un minuto o due per vedere seJava/ERDDAP™è davvero congelato o se sta solo facendo una lunga raccolta di rifiuti. (Se la raccolta di rifiuti è un problema comune,allocare più memoria a Tomcat.)
Non consiglio di usare Tomcat Web Application Manager per avviare o chiudere Tomcat. Se non si completamente shutdown e avvio Tomcat, prima o poi si avrà PermGen problemi di memoria.
Per chiudere e riavviare Tomcat eERDDAP:
- Se si utilizza Linux o Mac:
(Se hai creato un utente speciale per eseguire Tomcat, ad esempio, tomcat, ricorda di fare i seguenti passaggi come quell'utente.)
- Utilizzare cd tomcat /
- Utilizzare ps -ef|tomcat grep per trovare il processo java/tomcat ID (Speriamo che solo un processo sarà elencato) che chiameremo javaProcess sotto.
- SeERDDAP™è congelato/hung/bloccato, uso uccidere -3 javaProcess per direJava (che è in esecuzione Tomcat) per fare una discarica filettata al file di registro Tomcat: tomcat /logs/catalina.out . Dopo il riavvio, è possibile diagnosticare il problema trovando il thread dump informazioni (e qualsiasi altra informazione utile sopra di esso) in tomcat /logs/catalina.out e anche leggendo parti rilevanti delERDDAP™archivio di log. Se vuoi, puoi includere queste informazioni e vedere le nostresezione per ottenere supporto aggiuntivo.
- Utilizzare ./shutdown. #
- Utilizzare ps -ef|grep tomcat ripetutamente fino a quando il processo java/tomcat non è elencato.
A volte, il processo java/tomcat richiederà fino a due minuti per chiudere completamente. Il motivo è:ERDDAP™invia un messaggio ai suoi filetti di sfondo per dirgli di fermarsi, ma a volte ci vuole molto tempo per arrivare a un buon punto di sosta.
- Se dopo un minuto o giù di lì, java/tomcat non si ferma da solo, è possibile utilizzare
uccidere -9 javaProcess
forzare il processo java/tomcat a fermarsi immediatamente. Se possibile, utilizzare questo solo come ultima risorsa. L'interruttore -9 è potente, ma può causare vari problemi. - RiavviareERDDAP™, utilizzare ./startup.sh
- VistaERDDAP™nel tuo browser per verificare che il riavvio è riuscito. (A volte, è necessario aspettare 30 secondi e cercare di caricareERDDAP™di nuovo nel vostro browser per esso per avere successo.)
- Se si utilizza Windows:
- Utilizzare cd tomcat /
- Usoshutdown.bat
- È possibile che si desidera / bisogno di utilizzare il Task Manager di Windows (accessibile tramite Ctrl Alt Del) per assicurare cheJava/Tomcat/ERDDAP™processo/applicazione è completamente fermato. A volte, il processo/applicazione richiederà fino a due minuti per chiudere. Il motivo è:ERDDAP