Efficienza del ridimensionamento orizzontale in caso di distribuzione multipla dello stesso contenitore su un singolo host

4

Otteniamo efficienza in termini di gestione del carico quando lo stesso contenitore (in questo caso il contenitore ha un server Apache e un'applicazione php) viene distribuito 5 o più volte (ovvero 5 o più contenitori vengono distribuiti) sullo stesso host o VM?

Qui l'efficienza significherebbe se l'applicazione è tale architettura è in grado di servire più richieste o servire più velocemente le richieste?

Per quanto ne so, ogni richiesta avvia un nuovo thread apache-php e se abbiamo 5 contenitori che gestiscono le richieste, allora sarà inefficiente dato che i thread lanciati da apache verranno contestualmente spostati più spesso?

    
posta Ankit Jain 01.06.2018 - 22:25
fonte

2 risposte

2

Questa è una buona domanda, ma non semplice da rispondere in teoria. Gran parte della risposta dipende da quanto i thread siano isolati nell'architettura Apache / PHP. Mentre ci possono essere thread separati, ciò non significa che non ci sia conflitto tra loro. Ad esempio, possono bloccare i mutex condivisi o i semafori. In questo caso, avendo 5 contenitori che eseguono 1 richiesta ciascuno, è possibile gestire una concorrenza maggiore di 5 thread in un'istanza di applicazione.

Per quanto riguarda se ci sarà più cambio di contesto dei thread. Questo non è necessariamente il caso dato lo stesso numero di richieste. Tuttavia, se c'è uno o più thread non richiesti per istanza, avresti 5 volte il numero di questi thread overhead.

Suggerisco di provare varie configurazioni sotto carico e ottenere metriche per una migliore comprensione dei costi e dei benefici di ciascuna.

Ci sono altri vantaggi nell'isolamento che possono superare questi costi se esistono. Uno dei principali vantaggi è che se si ha un crash del contenitore da una cattiva richiesta, non si perdono gli altri 4 e molti strumenti consentono il ripristino automatico dei contenitori scaricati. Inoltre, se sei soggetto a una delle numerose vulnerabilità che si trovano regolarmente nei pacchetti PHP, un utente malintenzionato dovrà uscire dal contenitore per ottenere l'accesso o il controllo sull'host / VM.

    
risposta data 01.06.2018 - 22:49
fonte
1

No, in genere * non è più efficiente eseguire più contenitori su un singolo host che esegue la stessa applicazione.

Anche se non presupponiamo alcun sovraccarico per l'esecuzione di container, i server Web sono già progettati per gestire il maggior numero possibile di richieste.

Se gestire più richieste era semplice come eseguire il programma due volte (che in effetti è), lo farebbero già (cosa che in effetti fanno)

* Forse se avessi un programma che non è stato progettato per l'attività, ad esempio usando Excel per elaborare le regole aziendali, ad esempio, vorrai avere una strategia di contenitori multipli per aggirare i suoi limiti, ad esempio avere più copie aperte a allo stesso tempo.

    
risposta data 03.06.2018 - 10:11
fonte

Leggi altre domande sui tag