从 Debian 迁移到 Ubuntu 后,uWSGI 工作器/主控器的内存使用量增加

从 Debian 迁移到 Ubuntu 后,uWSGI 工作器/主控器的内存使用量增加

将我们的 Web 服务器从 Debian 迁移到 Ubuntu 后,我们注意到 uWSGI 主进程和工作进程使用的内存量 (RSS) 大幅增加。uWSGI 版本 (1.9.13) 保持不变。

我使用 pmap 检查了每个进程的内存使用情况。在 Debian 下,主进程如下所示:

Address             RSS     Dirty   Mode    Mapping 
----------------    ------  ------  ------          
kB                  15976   11316           
0000000001a880000   7308    7308    rw---   [anon
400000              1608    0       r-x--   uwsgi   
00007ff16c5a70000   772     772     rw---   [anon
00007ff176c3a0000   668     0       r-x--   libcrypto.so.0.9.8  
00007ff175f010000   548     0       r-x--   libc-2.11.3.so  
00007ff177fc70000   512     512     rw---   [anon
00007ff17807b0000   512     512     rw---   [anon
00007ff1759e50000   356     0       r-x--   libstdc++.so.6.0.13 
80                  268     184     rw---   uwsgi   

我只显示最相关的内存块,RSS 下的数字以千字节为单位。

而现在,Ubuntu 下 uWSGI 已经为自己分配了更多的内存。

Address             RSS     Dirty   Mode    Mapping     
----------------    ------  ------  ------              
kB                  24216   19196               
2401000             15508   15508   rw---   [   anon    ]
00007f3094e86000    1648    0       r-x--   libpython2.7.so.1.0     
00007f308c6ce000    772     772     rw---   [   anon    ]
00007f3094abe000    680     0       r-x--   libc-2.17.so        
00007f309595d000    612     0       r-x--   libcrypto.so.1.0.0      
00007f3096de4000    512     512     rw---   [   anon    ]
00007f3096e67000    512     512     rw---   [   anon    ]
400000              480     0       r-x--   uwsgi       
00007f30945b3000    352     0       r-x--   libstdc++.so.6.0.17     
00007f309532e000    340     248     rw---   libpython2.7.so.1.0     

这些主进程中加载​​的应用程序的配置和类型在其他方面是相同的。Debian 的内核版本为 2.6.32-5-xen-amd64,Ubuntu 的内核版本为 3.8.0-19-generic。

有人知道为什么每个主机都要给自己分配另外 8MB 的内存吗?

答案1

发现问题,Ubuntu自带的系统版本Python2.7导致uWSGI进程占用内存较多,编译新版本的Python,用新版本启动uWSGI Emperor,问题解决。

在 Ubuntu 13.04 上使用以下命令可以编译 Python 并安装 uWSGI。

wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
tar jxf Python-2.7.5.tar.bz2
cd Python-2.7.5/
./configure --prefix=/opt/python2.7.5 && make && make install
cd /opt/python2.7.5/
curl -O http://python-distribute.org/distribute_setup.py
bin/python2.7 distribute_setup.py
bin/easy_install-2.7 pip
bin/pip-2.7 install uwsgi

相关内容