Italian community of Lazarus and Free Pascal
Altro => Pub => Topic aperto da: tito_livio - Febbraio 25, 2025, 08:26:56 pm
-
Ciao a tutti,
avrei una domanda da fare che con Lazarus c'entra solo marginalmente ma penso che molti di voi potrebbero consigliarmi per via della proprie esperienze di lavoro.
Dovrei fornire la configurazione per un server e per un client entrambi Windows.
Il server dovrà ospitare un server Mysql al quale si collegheranno, in rete locale, contemporaneamente circa venti client.
Su ogni client girerà un programma compilato con Lazarus che interrogherà il server, in media, ogni 30 secondi.
La query più impegnativa dovrebbe essere l'estrazione di 60 record fra 800.000.
Grazie in anticipo.
-
Server - Hardware consigliato:
CPU: Intel Xeon E3/E5, Core i7/i9 o AMD Ryzen 7/9 o EPYC con almeno 6-8 core
RAM: Minimo 8 GB, consigliati 16 GB se il database crescerà nel tempo
Storage: SSD da almeno 512GB (preferibile rispetto agli HDD per ridurre i tempi di accesso ai dati)
Rete: Ethernet 1 Gbps o superiore
Alimentazione e sicurezza: UPS per proteggere da blackout e sbalzi di tensione
Altri consigli:
Configurazione MySQL:
Ottimizzazione InnoDB: Assicurati che la tabella con 800.000 record utilizzi InnoDB e non MyISAM
Buffer pool: Imposta innodb_buffer_pool_size almeno al 50-70% della RAM disponibile
Indice sulle query più frequenti: Crea indici sulle colonne interrogate più spesso per velocizzare le ricerche
Connessioni simultanee: Imposta max_connections a 100-200 per gestire picchi di richiesta
Devi però essere in grado di prevedere se il progetto crescerà nel tempo e se si quanto velocemente. Se dovesse crescere velocemente io rivaluterei la cosa nello scenario peggiore da qui a 5 anni.
-
penso che la configurazione di xinyiman sia buona
gli unici suggerimenti che posso aggiungere sono che, come RAM, farei da 16GB in su (8GB li metterei solo se il cliente deve risparmiare)
aggiungerei inoltre un secondo HD non SSD per copie interne (ma forse anche per lo storage di MySql)
-
Grazie,
a questo punto vorrei chiedervi:
-La rete attuale ha pc e server di circa dieci anni fa e ho visto che il carico di lavoro sulla cpu,sempre con il mio programma, si divide circa al 50% fra server e client. C'é un tipo di client da configurare o va bene un pc moderno tipo i5 con 16 GBdi ram?
-Per vari motivi devo mantenere le tabelle in MYIsam, c'é una configurazione di MYsql che consigliate?
-Ha importanza la mainboard?
-
Prima di cambiare tutti i client, fai una prova. Cioè se regge installalo sui vecchi client. Altrimenti l'i5 dovrebbe andare bene. In realtà quello che garantisce maggiori performance è la rete. A 1GB hai delle prestazioni a 10GB ne hai altre, a 100 ancora meglio, in fibra neanche a parlarne.
-
Ciao.
Non ho compreso il SO che vuoi usare con il server. Se Linux la configurazione HW và bene, se Windows (tipo Windows server 2022 standard) la RAM consiglio di elevarla almeno a 24 GB.
SSD da 512 GB: a mio avviso, per essere un sistema server consiglierei almeno una configurazione RAID (che dipende da ciò che vuoi focalizzare). Quindi non un solo SSD ma almeno 2 (o tre generalmente con il RAID 5). Parti da qui: https://it.wikipedia.org/wiki/RAID (https://it.wikipedia.org/wiki/RAID) (a me non piace come è esposta la descrizione RAID, ma comunque è un punto di partenza).
Ci sono altre configurazioni RAID (tipo il 10), tieni presente che tutte le motherboard Intel (a maggior ragione quelle per sistemi workstation) hanno il RAID proprietario hardware a disposizione, che potrebbe anche bastare se non si vuole avere la luna.
Altre info: consiglio un sistema di bilanciamento del carico (Windows server dovrebbe averlo in dotazione, Linux non sò).
Mandi
-
Grazie,
a questo punto vorrei chiedervi:
-La rete attuale ha pc e server di circa dieci anni fa e ho visto che il carico di lavoro sulla cpu,sempre con il mio programma, si divide circa al 50% fra server e client. C'é un tipo di client da configurare o va bene un pc moderno tipo i5 con 16 GBdi ram?
-Per vari motivi devo mantenere le tabelle in MYIsam, c'é una configurazione di MYsql che consigliate?
-Ha importanza la mainboard?
Prima di cambiare tutti i client, fai una prova. Cioè se regge installalo sui vecchi client. Altrimenti l'i5 dovrebbe andare bene. In realtà quello che garantisce maggiori performance è la rete. A 1GB hai delle prestazioni a 10GB ne hai altre, a 100 ancora meglio, in fibra neanche a parlarne.
Il carico di lavoro che indichi non ha una valorizzazione (un client normale quanti "gigabit" necessità di trasferimento al secondo ?). A mio parere, se il tuo software è fatto bene e MySQL viene configurato correttamente con una ventina di client non dovresti avere alcun problema con una rete cablata da 1 Gbit.
Ovviamente vale comunque il discorso di @xinyiman.
Per ciò che riguarda un PC client, un qualsiasi PC più o meno moderno (I5, ma anche I3 ritengo) può andare bene.
E' comunque difficile fare una valutazione senza conoscere l'applicazione. Magari ci vogliono degli I9 .... ;D ;D ;D
-
Ciao.
Non ho compreso il SO che vuoi usare con il server. Se Linux la configurazione HW và bene, se Windows (tipo Windows server 2022 standard) la RAM consiglio di elevarla almeno a 24 GB.
SSD da 512 GB: a mio avviso, per essere un sistema server consiglierei almeno una configurazione RAID (che dipende da ciò che vuoi focalizzare). Quindi non un solo SSD ma almeno 2 (o tre generalmente con il RAID 5). Parti da qui: https://it.wikipedia.org/wiki/RAID (https://it.wikipedia.org/wiki/RAID) (a me non piace come è esposta la descrizione RAID, ma comunque è un punto di partenza).
Ci sono altre configurazioni RAID (tipo il 10), tieni presente che tutte le motherboard Intel (a maggior ragione quelle per sistemi workstation) hanno il RAID proprietario hardware a disposizione, che potrebbe anche bastare se non si vuole avere la luna.
Altre info: consiglio un sistema di bilanciamento del carico (Windows server dovrebbe averlo in dotazione, Linux non sò).
Mandi
Sia sul server che sui client il SO sarà Windows.
Mi sto orientando per una configurazione con 2 SSD e 2 HDD per le copie, con raid 1 su ogni coppia e 32 GB di RAM, senza la suddivisione del carico (penso tu ti riferisca alla soluzione di più server che formano un cluster).
Devo stare attento a mantenere la spesa se possibile.
Il carico di lavoro che indichi non ha una valorizzazione (un client normale quanti "gigabit" necessità di trasferimento al secondo ?). A mio parere, se il tuo software è fatto bene e MySQL viene configurato correttamente con una ventina di client non dovresti avere alcun problema con una rete cablata da 1 Gbit.
Ovviamente vale comunque il discorso di @xinyiman.
Per ciò che riguarda un PC client, un qualsiasi PC più o meno moderno (I5, ma anche I3 ritengo) può andare bene.
E' comunque difficile fare una valutazione senza conoscere l'applicazione. Magari ci vogliono degli I9 .... ;D ;D ;D
Ogni client, quando interagisce col server, effettua una query che legge o salva circa 300KB e fra una lettura ed un salvataggio c'è il lavoro dell'utente che inserisce dati, legge ciò che sta a video, stampa e cose del genere.
Per questo anch'io penso che sia sufficiente una rete ad 1 Gb.
Sul fatto che il programma sia fatto bene, probabilmente sarà argomento magari di un altro Thread che vorrei fare, per adesso volevo affrontare il problema dell'hardware.
-
Mi sto orientando per una configurazione con 2 SSD e 2 HDD per le copie, con raid 1 su ogni coppia ....
Per le copie (inteso come backup) consiglio un dispositivo esterno, anzi più che un consiglio è quasi un obbligo. Non ha molto senso avere una copia permanentemente in linea alimentata dallo stesso dispositivo.
Ogni client, quando interagisce col server, effettua una query che legge o salva circa 300KB e fra una lettura ed un salvataggio c'è il lavoro dell'utente che inserisce dati, legge ciò che sta a video, stampa e cose del genere.
300 KB non sono nulla per una rete. Anche se fosse un flusso continuo e ininterrotto, corrisponderebbe a meno di 5 Megabit (esagerando) di "traffico" (una interrogazione da un client ogni secondo). Venti client in continuo (ogni secondo una transazione) occuperebbero 100 Mbit saturando una rete fast ethernet, ma una giga ethernet neanche li sente.
Ovvio che una situazione simile non può oggettivamente verificarsi (se non in casi veramente sporadici), e probabilmente il problema non sarà la rete ma eventualmente il database.
Sul fatto che il programma sia fatto bene, probabilmente sarà argomento magari di un altro Thread che vorrei fare, per adesso volevo affrontare il problema dell'hardware.
Non era mia intenzione discutere sulla qualità dei programmi, volevo solo porre l'accento che l'abbinamento SW / HW è essenziale per una migliore riuscita del sistema.
-
Mi sto orientando per una configurazione con 2 SSD e 2 HDD per le copie, con raid 1 su ogni coppia e 32 GB di RAM, senza la suddivisione del carico (penso tu ti riferisca alla soluzione di più server che formano un cluster).
Devo stare attento a mantenere la spesa se possibile.
forse dovresti pensare anche alle copie esterne al server, in un'altra macchina e/o cloud intendo
nel senso che per essere a posto con la sicurezza informatica una copia esterna credo che serva
per mantenere la spesa potresti mettere 1 solo HDD (quindi togliere anche il raid) per le copie interne
e prevedere un pc economico in rete come copia esterna
Edit:
per ricollegarmi a quanto detto da DragoRosso (m'era sfuggito l'intervento sul backup :P), la copia è meglio esterna che interna
tuttavia la copia interna è più veloce da raggiungere e/o ripristinare in caso di necessità ed inoltre hai 2 copie
(per citare una vecchia pubblicità: due is megl' che uan :D )
-
Non era mia intenzione discutere sulla qualità dei programmi, volevo solo porre l'accento che l'abbinamento SW / HW è essenziale per una migliore riuscita del sistema.
Infatti, non pensavo che tu volessi discutere sulla qualità del programma, anche io so che certe volte una migliore soluzione software vale più, in termini di velocità, di qualunque hardware potente.
Il fatto è al livello del programma ho dei dubbi relativi anche al Lazarus ma, come ho detto, è un altro argomento.
forse dovresti pensare anche alle copie esterne al server, in un'altra macchina e/o cloud intendo
nel senso che per essere a posto con la sicurezza informatica una copia esterna credo che serva
per mantenere la spesa potresti mettere 1 solo HDD (quindi togliere anche il raid) per le copie interne
e prevedere un pc economico in rete come copia esterna
Edit:
per ricollegarmi a quanto detto da DragoRosso (m'era sfuggito l'intervento sul backup :P), la copia è meglio esterna che interna
tuttavia la copia interna è più veloce da raggiungere e/o ripristinare in caso di necessità ed inoltre hai 2 copie
(per citare una vecchia pubblicità: due is megl' che uan :D )
Pienamente d'accordo, per le copie di sicurezza mi sono fatto pure un programmino (a volte con copie diverse per ogni giorno della settimana o addirittura per ora) e faccio copie sullo stesso server, su di un pc esterno e sul cloud.
Ognuna di queste copie ha il suo perché.
Per la copia sul cloud però sorgono diverse altre difficoltà come Privacy, velocità di copia e possibilità di ripristino, a volte il cliente ha archivi molto pesanti.
Anche per questo argomento vorrei fare un altro thread.
-
Attendiamo i tuoi nuovi thread.
Ciao