Frage

Ich habe eine Rails 2.3.8 app gehostet und auf Slicehost (256M) ausgeführt wird. Ich bin nicht mit dem Back-End vertraut, ich folgte im Wesentlichen die Schritten von dem Slicehost Tutorials Apache zu installieren. Der Speicherverbrauch hoch sehr ist, habe ich dann meine Apache conf-Datei geändert, um die MaxClient Zahl auf 10 zu reduzieren ... aber meine Scheibe tauscht noch.

Hier ist, was die Speicherauslastung ich nach nur ein paar Klicks auf meiner Website:

    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                                

Ich bin mir nicht sicher, was als nächstes zu tun ... ich auf ein größeres Stück aufgewertet werden könnte, aber jetzt habe ich fast keinen Verkehr auf dieser App, so dass ich denke, es ist mehr ein Problem mit meiner Konfiguration oder vielleicht meinen Code

Jede konkrete Empfehlungen wäre willkommen! Dank

War es hilfreich?

Lösung

Es sieht aus wie Ihre Rails-Anwendung alle verfügbaren Speicher verwendet. Ich würde drei Dinge empfehlen:

  1. Aktualisieren Sie den Speicher auf Ihrem Server. 256MB ist nicht sehr viel für eine Rails-Anwendung. Going to 512 kann Ihr Problem lindern. Wenn das löst es, müssen Sie dann die zusätzlichen Kosten ($ 18 / mo) vs überlegen, wie viel Zeit wird es dauern, um Performance-Probleme aufzuspüren.

  2. Profil Anwendung um herauszufinden, welche Anfragen die meisten Speicher verbrauchen. Das wird wahrscheinlich Orte, wo man viele Platten sind zu finden und möglicherweise einige dazugehörigen Tabellen auch darunter. Es gibt ein paar Tools gibt Ihnen mögliche Problembereiche eingrenzen zu helfen. Ich habe verwendet oink aber es gibt definitiv andere. Wenn Sie herausfinden, wo die Probleme sind, können Sie einige Änderungen vornehmen, um zu versuchen und die Speichernutzung zu reduzieren.

  3. Angenommen, Sie Passagier mit Apache verwenden, können Sie die Anzahl der gleichzeitigen Anforderungen in der Passagier-Konfigurationsdatei reduzieren. Dies könnte nützlich sein für die https: // serverfault.com/questions/15350/running-ruby-on-rails-app-on-apache-passenger-to-much-memory

Andere Tipps

Kurz gesagt, ist 256 MB fest für eine Rails-Anwendung. Sie gab nicht wirklich keine Besonderheiten auf, wie Sie laufen Schienen, aber ich nehme an, Sie Apache mit dem Passagier-Modul verwenden. Das Passagier-Modul kann so konfiguriert werden, auf wie viele Instanzen es läuft weiter. Sie haben 4 Rubin Instanzen unter dem Web-App-Konto ausgeführt wird. Ich denke, diejenigen kommen aus Passagier. In der Konfiguration können Sie, wie viele Instanzen Passagier beginnt zu begrenzen. Dadurch werden die Speicheranforderungen reduzieren.

Auf der anderen Seite, wenn sie mit nur 256 MB zu arbeiten, und wenn Sie Hosting nur 1 Rails-Anwendung, könnte es besser sein für eine andere Einrichtung zu gehen. Das Setup, dass ich verwenden mich war, bevor ein Nginx Web-Server und ein Mischlings Cluster mit 2 Mischlingen (auf 192 MB, und die Anwendung nur für Testzwecke). Grundsätzlich Das bedeutet, dass zu einem bestimmten Zeitpunkt kann man 2 Verfahren (nur 2) Schienen Anforderungen parallel. Die Einrichtung ist vielleicht ein bisschen härter als Apache + Passagier-, aber auf jeden Fall nicht schwer. Ich denke, dass eine leistungsfähigere Lösung ist, wenn man mit dem 256 MB-Stick.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top