Domanda

Ho un servizio Web in esecuzione su 3 server. Il woreking è la seguente -Server richieste 1 recieves utenti memorizzano sui db locale e fa un certo lavoro su di esso. -Server 2 e 3 sono identici e le principali cavalli di lavoro, che in base alla richiesta recupera informazioni da internet e lo restituisce. . -Server 1 chiamate al server 2/3 tramite http richiesta su rete LAN (c'è uno script php sul server 2 e 3 in modo Server 1 chiamate come http: //localip/script.php ) -Server 1 chiede in alternanza del server 2 o 3 (questo è fatto per distribuire il carico) Ogni query sul server di 2/3 richiede circa 8 secondi per processo. Ora, quando ho installato uno strumento di monitoraggio su tutti i server ha trovato che il server1 sta avendo troppo carico (che ha dimostrato numero di processo> limite critico) Non è questo il modo per bilanciare il carico? Come posso ridurre il carico in Server1?

È stato utile?

Soluzione

Server 1 sta rispondendo alle richieste in arrivo dagli utenti. Quindi, se avete deciso che è il collo di bottiglia, allora avete bisogno di focalizzare la vostra attenzione lì.

Se il server 2 e 3 sono prestazioni con le query a Internet, allora probabilmente non è facendo troppo processore lavoro / disk saggio.

Se avete 2 server configurati per fare un compito ragionevolmente facile, e il server user-facing primaria è sovraccarico potrebbe essere meglio semplicemente quello di eseguire tutti i 3 server come user-rivolta.

Da quello che hai descritto suona come Server # 1 sta bloccando sulla risposta dai server 2 e 3, il che significa che deve tenere aperte molte connessioni potenzialmente. Se i server 2 e 3 non sono in realtà non più di tanto lavoro perché il loro compito è query internet solo si sarebbe probabilmente meglio serviti attraverso la fusione dei server user-fronte e il motore di query in un server e la distribuzione del carico degli utenti in tutti e 3 i server .

In questo modo ogni server dispone di un minor numero di connessioni aperte dall'utente. E il motore di query ancora non sta intasando le risorse (se si tratta di richieste web solo), quindi non è un impatto negativo le prestazioni degli utenti.

Solo alcuni pensieri per voi. Non è possibile essere totalmente definitiva senza sapere di più sulla tua applicazione.

Ulteriori commenti

Come accennato nei commenti si dovrebbe guardare in una vera e propria di bilanciamento del carico, un buon bilanciamento del carico hardware è la prima raccomandazione. Dove corri vostri server? Se sono in una nuvola datacenter come Amazon EC2, Rackspace, ecc allora il bilanciamento del carico dei servizi sono facilmente disponibili a voi.

È anche possibile utilizzare un bilanciatore di carico software. Apache fornisce questa funzionalità anche:

http://httpd.apache.org/docs/current/mod/ mod_proxy_balancer.html

Anche con la configurazione attuale, sarebbe possibile mettere Apache di fronte a uno dei server e poi regolare in modo che il server con Apache (facendo il bilanciamento del carico) ottiene una percentuale più bassa del traffico, per compensare la spesa del server Apache. In questo caso si ha alcun cambiamento hardware. Anche se si dispone di un evidente single point of failure, non dissimile da quello che hai ora, però, un carico adeguato sistema di bilanciamento allevia in genere il problema single-point-of-failure si hanno attualmente con la propria architettura.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top