Sito web Arcade Database

Il database che raccoglie tutte le informazioni sui giochi, video, screenshot e tanto altro ancora

Moderatore: Moderatore ADB

Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: Sito web Arcade Database

Messaggio da motoschifo »

Ho pubblicato un aggiornamento che mi ha impegnato le ultime due settimane, sperando di risolvere in parte il problema scraping ed alleggerire il carico del server.
Si tratta di un sistema di cache dei dati ottenuti dalle chiamate api.
All'apparenza semplice, l'algoritmo si complica quando ci sono in gioco tante variabili e possibilità.
La generazione di questa cache dura diverse ore, quindi valuterò quando farlo in base agli aggiornamenti che applicherò ai dati.

Spero di non aver introdotto errori, nel caso fatemelo sapere.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: Sito web Arcade Database

Messaggio da motoschifo »

L'aggiornamento ha risolto in parte i problemi di performance, nel senso che l'elaborazione server (api) è sostanzialmente stata azzerata (ci sono ancora margini di miglioramento ma il grosso è stato fatto).
La rigenerazione di questa cache richiede purtroppo alcune ore, oltre ad utilizzare 250 mila file temporanei sul server e circa 1GB di disco. Ma non sipuò avere tutto.

In aprile continuerò con la sostituzione del sorgente di alcune routine pesanti, sempre in ambito api, mentre da giugno riprenderò i lavori di rifacimento del sito.
Mi sembrava di aver concluso la nuova gestione filtri (almeno dal punto di vista tecnico) ma in realtà non mi soddisfa del tutto e quindi dovrò lavorarci ancora... ci vorrà tanto tempo, ma prima o poi spero di chiudere qualcosa (fine anno è molto vicino, probabilmente si andrà al prossimo).

Dai grafici vedo che gli accessi sono aumentati e le api incidono solo un 10% rispetto al 90% di prima. In effetti il sito è molto più scarico e consultabile anche dall'utente.
Il picco è di 1.6 milioni di richieste giornaliere, con una media del mese di 1 milione/giorno. Per avere un paragone, lo scorso anno eravamo sui 500 mila/giorno.
La strada è ancora lunga, quando ci sono numeri così alti la normale ottimizzazione dei processi non basta, serve qualcosa di più e richiede ovviamente più tempo per la realizzazione (soprattutto per i test). Probabilmente in futuro dovrò fare in modo di usare il meno possibile la parte database/cpu e lavorare solo su file in cache, anche parziali, e quindi concentrare gli aggiornamenti di tutti i file in un solo momento per rigenerare una sola volta al mese tutte queste cache sparse nel sito. Una volta raggiunto questo risultato, la rigenerazione potrebbe in realtà avvenire su un altro pc (es. quello di casa) e potrei poi caricare tutte le modifiche senza alcun problema di performance.
La strada è ancora lunga, comunque sono tutte questioni molto tecniche che interessano poco l'utente finale...
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4847
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 272 volte

Re: Sito web Arcade Database

Messaggio da Gothrek »

l'utente finale no, ma se lato api porti cambiamenti mi interessano particolarmente.

finalmente gotscraper comincia ad essere scaricato (ancora lentamente ma va).

Lato mio al momento è ancora poco, storicamente ad adb gotscraper ha fatto circa 700K chiamate.

Sogno sempre con l'avere a disposizione via api tutta una serie di info che al momento sono costretto a consultare one by one da sito.

grazie moto.
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: Sito web Arcade Database

Messaggio da motoschifo »

Dato che in questi giorni ho ricevuto parecchie segnalazioni di sito down, ho controllato la situazione e non ho visto errori.
Credo sia dovuto all'eccessivo carico del server.

Spulciando tra i log ho visto che le api, dopo la mia modifica di un mesetto fa, sono messe molto bene. Certo ora il problema potrebbe essere la banda totale a disposizione, ma lato cpu la macchina è quasi completamente scarica (almeno per le api).

L'altro grande tema che impegna cpu e disco è quello delle esportazioni.
Oggi per esempio qualcuno ha ritentato la stessa esportazione, circa 10 mila giochi, per ben 9 volte per un totale di 4 ore cpu circa.
Voglio sperare che sia stato un bot o un programma a farlo, perchè ritentare dopo 30 minuti la stessa operazione per tutta la giornata sarebbe davvero un grande spreco di tempo.
A parte ciò che posso pensare su questa cosa, prima o poi dovrò intervenire anche sugli export e disaccoppiare il processo in modo da renderlo più flessibile.
Potrei inoltre tenere il conto e procedere solo se il server è in grado di supportare il carico, per esempio 20 export contemporanei e gli altri in coda o qualcosa del genere.

Intanto vedo se riesco a bloccare qualcosa per dargli un pochino di respiro.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: Sito web Arcade Database

Messaggio da motoschifo »

Ho chiuso tutto per un minuto in modo da capire se ci fossero problemi tecnici, il sito da quel momento è tornato online senza intoppi.
Ci sono molte richieste (scraper) e dai log vedo che sono per la maggior parte anche richieste inutili, perchè i giochi chiaramente non sono del Mame (c'è pure l'estensione .NES nel nome della rom) quindi non saranno mai presenti all'interno del database.
Secondo me qualcuno ha confuso il servizio con un altro, forse credeva che buttando a caso l'elenco di file di una cartella si riuscisse magicamente a scoprire l'immagine del gioco.

Non vedendo anomalie, ma solo tanto traffico, direi che il sito ha raggiunto il suo limite. Rispetto allo scorso ottobre, dove il vincolo era rappresentato dall'elaborazione per caricare i dati e dove poteva servire al massimo 800 mila richieste di risorse al giorno, oggi vedo che ci sono picchi del doppio e quindi direi che siamo arrivati a saturare il server.

Terrò controllata la situazione, poi deciderò come intervenire per poter rendere il sito fruibile senza i ritardi che ci sono ora.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4847
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 272 volte

Re: Sito web Arcade Database

Messaggio da Gothrek »

nei miei deliri mi piacerebbe pensare che per fare scraping da adb ci si debba regisrare, cosi da permettere a tutti di godere della propria fetta di scraping
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: Sito web Arcade Database

Messaggio da motoschifo »

Anche se potrebbe sembrare una soluzione, non durerebbe a lungo.
Registrarsi è molto semplice, anzi esiste anche una funzione per fare la prova di una settimana senza inserire nemmeno un dato, quindi nemmeno la mail.
E comunque sia, anche se tutti gli utenti di oggi fossero registrati, sarebbero comunque troppi.
Devo ragionarci sopra ma limiterò le chiamate api giornaliere per indirizzo ip e troverò il modo di rendere questo limite dinamico/automatico come già fatto per altri aspetti, in modo da intervenire solo nel caso in cui ci sia davvero mancanza di risorse.

Infatti mentre le api vengono spesso lanciate e "dimenticate", quindi possono anche ore, l'utente che cerca i suoi 10 giochi e magari salva la lista personale riceverà un timeout e quindi non potrà fare proprio nulla.
Io stesso ricevo avvisi di sito down e poi up quando succedono queste cose, e sono tutti falsi allarmi in quanto il server gode di ottima salute (nel senso che non ci sono errori tecnici, è solo troppo piccolo per poter servire tutti).

La priorità deve andare agli utenti perchè sono davanti al monitor ad aspettare la risposta, non a servizi batch che sta spulciando un intero hard disk di 500 mila file e di cui magari solo 10 mila del Mame.
Ad esempio le esportazioni con molti giochi saranno un processo disaccoppiato, si riceverà l'avviso che il job è in lavorazione e fino alla conclusione non sarà possibile sottomettere altre esportazioni.
Come vedo fare a quasi tutti i siti ad alto traffico (es. discogs).

Sicuramente con il nuovo sito avremo meno impegno lato cpu, ma la banda viene impiegata principalmente per scaricare le risorse quindi le cose non potranno risolversi da sole. Basta mettersi in coda e c'è posto per tutti.

Limiterò le chiamate giornaliere totali e per chi fa troppi errori, quindi se arrivano 100 chiamate di romset non trovati, stai usando male un servizio che qualcuno invece potrebbe usare meglio.
Stessa cosa se chiami continuamente nella stessa settimana, o qualcosa del genere.
Ovviamente queste chiamate saranno rifiutate nei momenti con picchi di carico come succede in questi giorni.

La strada è questa, non ho ancora i dettagli perchè devo trovare il modo di avere i minor impatto lato server (anche contare le richieste sbagliate ha un costo, che andrà a sommarsi al carico totale, quindi devo dosare molto bene questi controlli).
Se riesco faccio qualcosa prima della fine del mese, se vedo che non ce la faccio limiterò il totale api giornaliero e poi man mano aggiusterò il tiro.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: Sito web Arcade Database

Messaggio da motoschifo »

Per adesso chi chiama le api di scraping con nomi non corretti (in pratica tutto ciò che non è numeri, lettere, underscore, trattino) o con nome del gioco superiore a 50 caratteri, riceve un errore 400 bad request e non va oltre.
Questo dovrebbe tamponare un attimo le richieste inutili, vedo che ce ne sono davvero tante.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4847
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 272 volte

Re: Sito web Arcade Database

Messaggio da Gothrek »

motoschifo ha scritto: 12/03/2023, 11:33 Per adesso chi chiama le api di scraping con nomi non corretti (in pratica tutto ciò che non è numeri, lettere, underscore, trattino) o con nome del gioco superiore a 50 caratteri, riceve un errore 400 bad request e non va oltre.
Questo dovrebbe tamponare un attimo le richieste inutili, vedo che ce ne sono davvero tante.
ok 400, sarebbe bello avere (non mi ricordo se l'avevi pubblicata già), una tabellina con le risposte cosi da gestirle correttamente.

latomio potrei evitare di passare qualuqneu cosa non sia:
zip 7z? corretto?
max 50 chars?

prima circa la registrazione mi riferivo ad integrazione con arcadeitalia dove la mail è registrata e convalidata, e magari anche numero min di post?
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: Sito web Arcade Database

Messaggio da motoschifo »

Non credo ci sia la tabellina degli errori, non ricordo, comunque sono sempre risposte standard html:
https://developer.mozilla.org/en-US/doc ... TTP/Status

Per i file, se non è un nome di romset compatibile andrebbe ignorato in partenza, mi riferisco a file con spazi, simboli o superiori a 50 caratteri. Questo perchè nessuna risposta potrà mai arrivare da quei file, quindi è sbagliato insistere a chiamare un servizio quando sai che non arriverà mai un contenuto.
Ovviamente questo si applica alla funzione query_mame, magari altre in futuro potranno accettare caratteri diversi.

In caso di richiesta multipla, anche un solo nome sbagliato invalida tutto, perchè vuol dire che non stai facendo controlli sulla chiamata e quindi è una pratica da disincentivare.
Nel dettaglio abbiamo errori per:
- lunghezza romset oltre 50 caratteri
- contenenti spazio
- contenenti slash, backslash o punteggiatura

In pratica tutto ciò che è diverso da A-Z, 0-9, underscore.
Il trattino non viene considerato valido, ricordavo male io.

Per l'integrazione con l'account del forum non abbiamo mai portato avanti il discorso, diciamo che andrebbe validato e che dovrei gestire un'abilitazione speciale ma per tutti quelli che non parlano l'italiano sarebbe uno step inutile e controproducente. Infatti avere 2 mila utenti in più nel forum non attivi non porterebbe a dei vantaggi pratici.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Rispondi

Torna a “Progetto Arcade Data Base”