为什么uWSGI使用比Apache更多的内存?
问题描述:
我决定尝试用我的Django应用程序代替Apache/mod_wsgi的NGINX/uWSGI。我尝试这样做的理由是,我听说NGINX/uWSGI使用较少的内存,在高流量情况下性能更好,NGINX非常适合静态内容。为什么uWSGI使用比Apache更多的内存?
但是我发现uWSGI使用的RAM比Apache多5倍。
[email protected]:~$ sudo ps_mem.py
Private + Shared = RAM used Program
184.0 KiB + 31.5 KiB = 215.5 KiB atd
220.0 KiB + 94.0 KiB = 314.0 KiB upstart-socket-bridge
260.0 KiB + 101.0 KiB = 361.0 KiB upstart-udev-bridge
340.0 KiB + 63.0 KiB = 403.0 KiB cron
392.0 KiB + 82.0 KiB = 474.0 KiB sudo
560.0 KiB + 14.0 KiB = 574.0 KiB dhclient3
612.0 KiB + 189.0 KiB = 801.0 KiB getty (6)
816.0 KiB + 35.5 KiB = 851.5 KiB dbus-daemon
660.0 KiB + 359.0 KiB = 1.0 MiB udevd (3)
960.0 KiB + 74.0 KiB = 1.0 MiB rsyslogd
1.1 MiB + 38.5 KiB = 1.2 MiB redis-server
1.1 MiB + 146.5 KiB = 1.2 MiB init
1.7 MiB + 1.1 MiB = 2.9 MiB nginx (3)
1.3 MiB + 1.8 MiB = 3.1 MiB sshd (3)
7.5 MiB + 69.5 KiB = 7.6 MiB bash
14.4 MiB + 5.7 MiB = 20.1 MiB apache2 (6)
23.6 MiB + 113.0 KiB = 23.7 MiB mysqld
95.5 MiB + 8.6 MiB = 104.1 MiB uwsgi (7)
---------------------------------
169.7 MiB
=================================
这是预期吗?
我可能配置了错误的东西吗? (master = true,4名工作人员)
当服务器处于压力下时,您是否只看到了好处?
答
这一切都归结为配置。由于大部分内存来自胖胖的Python Web应用程序,因此实际的底层WSGI服务器内存使用量通常很少。
你应该去看看我的PyCon谈话,我将讲述这个特定的问题以及人们如何被不同的WSGI服务器解决方案所使用的默认设置所欺骗。
http://lanyrd.com/2012/pycon/spcdg/
总之,这是一个有点阿帕奇/ mod_wsgi的会使用更多的内存mistruth的。将其配置为与其他解决方案相似的方式,并将相同的内存用于相同的Python Web应用程序。
+0
谢谢。我看到我的问题太模糊了。谈话很有帮助。 – 2012-07-26 04:35:10
*“你只看到当利益服务器是否处于压力之下?“*我认为这是公平的打赌,你会在一些负载下看到差异,而不仅仅是在启动时。 – Marcin 2012-07-25 21:45:59
这取决于配置。什么是Apache服务?它有多少预分叉过程?阿帕奇是否有预压?我很确定uwsgi比apache使用的内存少得多。但没有给出实际的配置 - 你将苹果与桃子进行比较.. – Tisho 2012-07-25 21:47:50
Apache正在使用预分叉。 5个过程。所以我收集的是,这并不罕见,无需担心? – 2012-07-25 22:17:02