Swapping Problem für Rails-Anwendung auf Slicehost
-
10-10-2019 - |
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 / p>
Jede konkrete Empfehlungen wäre willkommen! Dank
Lösung
Es sieht aus wie Ihre Rails-Anwendung alle verfügbaren Speicher verwendet. Ich würde drei Dinge empfehlen:
-
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.
-
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.
-
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.