我用 Gunicorn+Nginx 在一个服务器上面部署了两个 Djnngo 网站,于是除了问题,求解!!!

2018-03-14 16:08:17 +08:00
 Hopetree

说明一下情况:

1、我学了一段时间 Django,然后写了两个基本一样的博客网站

2、我使用 Gunicorn+Nginx 分别部署了这两个网站在阿里云的服务器上面,Nginx 这个好说,就是一个 service 文件来搞定,Gunicorn 的配置也是 service 文件,因为有两个网站,所以分别在两个 service 文件中配置了信息,我是按照下面这种来配置的:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
ExecStart=/home/sammy/myproject/myprojectenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/sammy/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

3、只需要分别运行着两个配置文件,网站就可以成功访问了,这个地方没有问题

4、问题在于,我发现我只部署一个网站的时候,服务器内存占用是 40-60%左右,但是两个网站都运行的时候,服务器内存占用长期是 80%以上,我的服务器是阿里云的,CPU1 核,内存 2G。

5、两个网站同时运行会经常出现 504 访问超时,或者直接 502,如果只运行一个网,就没问题,我怀疑就是内存占用的问题,但是具体为什么会这样,我不清楚啊,是不是 Gunicorn 运行两个网站很占用内存啊?

放上网站地址和代码,估计大佬也不愿意花时间看,但是说不准呢:

网站地址: 我的博客网站

网站源代码:Github 源代码

3764 次点击
所在节点    Django
5 条回复
okzpy9425
2018-03-14 16:25:47 +08:00
gunicorn 跑一个进程。
Hopetree
2018-03-14 16:30:29 +08:00
@okzpy9425 你的意思是不是我不应该创建两个 gunicorn 的配置文件?而是应该只运行一个?如果你说的是这个意思,那就是我想要的方案,因为在我创建两个配置文件来运行之前就是想着怎么来只运行一个配置文件来部署两个网站,我一直没有找到方法啊(另外,网上很多说的用 uwsgi+nginx 的部署我试过,一直没有弄好,所以暂时不想考虑用 uwsgi 了)如果你知道怎么改我的这个配置文件能够同时部署两个网站就好了
sunmonster
2018-03-14 17:14:50 +08:00
可以试试 waitress,gunicorn 是 pre-fork 模式,如果请求多了的话内存占用会比较多,但是你的网站应该还没那么多的流量,而且 1 核 cpu,2G 内存开一个就占用 40-60%是不是有点多了?
Hopetree
2018-03-14 17:35:20 +08:00
@sunmonster 对啊,就是因为这个内存占用太高了,所以我才奇怪啊,我这个服务器的配置不是阿里云的最基础版啊,2G 部署几个网站应该是没有问题的吧,我这部署两个都不行了所以我觉得是不是我部署的方式有问题,我会去看一下你说的这个的,了解一下
beaock
2019-05-18 13:13:17 +08:00
@Hopetree
请问 django 部署内存占用高的问题解决了么?
我也遇到了这个问题,不知道怎么配置
希望能帮助我一下,谢谢了!!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/437989

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX