在vps服务器上优化Django应用程序

时间:2013-07-13 21:42:27

标签: python mysql django nginx vps

关于如何优化vps内存使用的任何好的教程或方法?我的公羊正在吃掉记忆。我使用MySQL作为digitalocean 512mb vps ram上的数据库托管了Django + Uwsgi + Nginx。我有两个站点,其中一个只是托管,没有活动正在进行,而第二个,活动正在进行但不多。它就像一个房地产网站。

我运行此命令行代码:free -m并输出:

total               used free shared buffers cached
Mem: 491            406  85    0      17     108
buffers/cache:      280 210
Swap:                0   0     0

另一件事是,对于这两个站点,uswgi正在侦听不同的端口:127.0.0.1:8888和127.0.0.1:8889这可能是吃ram的一部分吗?

当我运行top时,它会显示:

Tasks:  70 total,   1 running,  69 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    503520k total,   410436k used,    93084k free,    18920k buffers
Swap:        0k total,        0k used,        0k free,   111772k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
6381 meey    20   0 17320 1188  900 R  0.3  0.2   0:00.09 top
1 root      20   0 24336 2132 1256 S  0.0  0.4   0:00.70 init
2 root      20   0     0    0    0 S  0.0  0.0   0:00.08 kthreadd
3 root      20   0     0    0    0 S  0.0  0.0   0:00.42 ksoftirqd/0
5 root      20   0     0    0    0 S  0.0  0.0   0:00.12 kworker/u:0
6 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
7 root      RT   0     0    0    0 S  0.0  0.0   0:05.04 watchdog/0
8 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 cpuset
9 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 khelper
10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kdevtmpfs
11 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 netns
12 root      20   0     0    0    0 S  0.0  0.0   0:02.12 sync_supers
13 root      20   0     0    0    0 S  0.0  0.0   0:00.05 bdi-default
14 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kintegrityd
15 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kblockd
16 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 ata_sff
17 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khubd

更多:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
790 root      20   0  333m 129m 3992 S  0.0 26.3   2:52.59 uwsgi-core
635 mysql     20   0  870m  51m 4124 S  0.0 10.4   1:43.62 mysqld
649 www-data  20   0 63520 2436  920 S  0.0  0.5   0:30.02 nginx
779 root      20   0  124m  14m 3176 S  0.0  3.0   0:24.84 uwsgi-core
780 root      20   0  124m  14m 3176 S  0.0  3.0   0:24.30 uwsgi-core
647 www-data  20   0 63520 2592  944 S  0.0  0.5   0:21.78 nginx
648 www-data  20   0 63520 2436  920 S  0.0  0.5   0:21.72 nginx
646 www-data  20   0 63520 2568  916 S  0.0  0.5   0:20.87 nginx
602 root      20   0 84160 2148 1520 S  0.3  0.4   0:19.70 uwsgi
600 root      20   0 84160 2140 1520 S  0.0  0.4   0:19.09 uwsgi
606 root      20   0 84116  820  192 S  0.0  0.2   0:12.08 uwsgi
603 root      20   0 84116  820  196 S  0.0  0.2   0:11.99 uwsgi
7 root      RT   0     0    0    0 S  0.0  0.0   0:05.05 watchdog/0
789 root      20   0  221m  29m 3956 S  0.0  6.1   0:03.58 uwsgi-core
12 root      20   0     0    0    0 S  0.0  0.0   0:02.12 sync_supers
402 syslog    20   0  243m 1224  904 S  0.0  0.2   0:01.90 rsyslogd
624 root      20   0 19112 1000  768 S  0.0  0.2   0:00.93 cron

1 个答案:

答案 0 :(得分:1)

你的记忆是什么?运行数据库服务器时,您可以执行的性能管理非常多。它们旨在为了性能而吃掉记忆。

uWSGI和Nginx效率很高。 Django并不精简,但内存使用也高度依赖于您的应用程序。如果要加载大量模块,那将占用您的内存使用量。

运行free -m并没有真正告诉我们哪些进程占用的内存最多。如何ps ax的输出,或浏览top