Domanda

Ho un Rails 2.3.8 app ospitato e in esecuzione su slicehost (256M). Non ho una conoscenza a tutti con il back-end, ho praticamente seguito i passi da tutorial Slicehost da installare Apache. L'utilizzo della memoria in fase molto alto, allora ho cambiato il mio file di configurazione di Apache per ridurre il numero MaxClient a 10 ... ma la mia fetta è ancora swapping.

Ecco quello che l'utilizzo della memoria ottengo dopo pochi clic sul mio sito:

    top - 23:57:12 up 28 min,  2 users,  load average: 0.43, 0.54, 0.30
Tasks:  79 total,   1 running,  78 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 97.8%id,  0.1%wa,  0.0%hi,  0.0%si,  2.0%st
Mem:    262364k total,   258656k used,     3708k free,      260k buffers
Swap:   524280k total,   262772k used,   261508k free,     6328k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                       
 4004 web-app   20   0  178m  72m 1888 S    0 28.4   0:04.38 ruby1.8                                        
 4001 web-app   20   0  172m  61m 1932 S    0 24.2   0:02.72 ruby1.8                                        
 3941 root      20   0  164m  57m 1672 S    0 22.5   0:21.44 ruby                                           
 3990 web-app   20   0  209m  21m 1696 S    0  8.4   0:18.00 ruby1.8                                        
 3950 web-app   20   0  165m 7464 1548 S    0  2.8   0:20.40 ruby1.8                                        
 3684 mysql     20   0  224m 6504 2084 S    0  2.5   0:14.34 mysqld                                         
 3938 root      20   0 53632 3048 1036 S    1  1.2   0:01.50 starling                                       
 3839 root      20   0  243m 1456 1248 S    0  0.6   0:00.34 apache2                                        
 3897 www-data  20   0  243m 1452 1072 S    0  0.6   0:00.04 apache2                                        
 3894 www-data  20   0  243m 1368 1008 S    0  0.5   0:00.04 apache2                                        
 3895 www-data  20   0  243m 1220  960 S    0  0.5   0:00.02 apache2                                        
 3888 root      20   0 46520 1204 1100 S    0  0.5   0:02.29 ruby1.8                                        
 3866 root      20   0 17648 1184  896 S    0  0.5   0:00.08 bash                                           
 3896 www-data  20   0  243m 1180  952 S    0  0.4   0:00.00 apache2                                        
 3964 www-data  20   0  243m 1164  956 S    0  0.4   0:00.02 apache2                                        
 3892 www-data  20   0  243m 1132  956 S    0  0.4   0:00.00 apache2                                        
 3948 www-data  20   0  243m 1132  956 S    0  0.4   0:00.00 apache2                                        
 3962 www-data  20   0  243m 1132  956 S    0  0.4   0:00.02 apache2                                        
 3963 www-data  20   0  243m 1132  956 S    0  0.4   0:00.00 apache2                                        
 3965 www-data  20   0  243m 1080  888 S    0  0.4   0:00.00 apache2                                        
 3887 root      20   0 89008  960  796 S    0  0.4   0:00.00 ApplicationPool                                

Non sono sicuro di cosa fare dopo ... ho potuto effettuare l'aggiornamento a una fetta più grande, ma per ora non ho quasi senza traffico su questa applicazione, quindi penso che sia più un problema con la mia configurazione o forse il mio codice

Tutti i consigli concreti sarebbe il benvenuto! Grazie

È stato utile?

Soluzione

Sembra che i tuoi rotaie app utilizza tutta la memoria disponibile. Suggerirei tre cose:

  1. Aggiornamento della memoria sul server. 256 non è molto per un'applicazione Rails. Andando a 512 può alleviare il problema. Se che risolve, è quindi necessario prendere in considerazione il costo aggiuntivo ($ 18 / mo) vs quanto tempo ci vorrà per rintracciare i problemi di prestazioni.

  2. Profilo vostra applicazione per capire quali richieste stanno consumando la maggior parte della memoria. Questo è probabile che a essere luoghi in cui si sta trovando un sacco di dischi e, eventualmente, tra cui alcune tabelle associate troppo. Ci sono un paio di strumenti là fuori per aiutare a restringere le possibili zone di difficoltà. Ho usato Oink ma ci sono sicuramente altri. Una volta a capire dove sono i problemi, si possono fare alcune modifiche per cercare di ridurre l'utilizzo della memoria.

  3. Supponendo che si sta utilizzando per passeggeri con Apache, è possibile ridurre il numero di richieste simultanee nel file di configurazione del passeggero. Questo potrebbe essere utile per questo https: // serverfault.com/questions/15350/running-ruby-on-rails-app-on-apache-passenger-to-much-memory

Altri suggerimenti

In breve, 256 MB è stretto per un'applicazione Rails. Non hai davvero dare qualsiasi specifiche su rotaie come in esecuzione, ma suppongo che si sta utilizzando Apache con il modulo del passeggero. Il modulo del passeggero può essere configurato su quanti casi si continua a funzionare. Hai 4 istanze rubino in esecuzione con l'account web-app. Credo che coloro che provengono da passeggeri. Nella configurazione, è possibile limitare il numero di avviamenti istanze passeggeri. Ciò consentirà di ridurre i requisiti di memoria.

D'altra parte, quando si lavora con solo 256 MB, e quando si è solo di hosting applicazione 1 binari, potrebbe essere meglio andare per un'altra impostazione. La messa a punto che io stesso usato prima era un server web Nginx, e un gruppo meticcio con 2 meticci (su 192MB, e l'applicazione è stato solo a scopo di test). In pratica questo significa che in qualsiasi momento, è possibile elaborare 2 (e solo 2) rotaie richieste in parallelo. La messa a punto è forse un po 'più difficile di quanto Apache + passeggero, ma sicuramente non è difficile. Penso che sia una soluzione più performante quando si bastone con il 256.

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