在uwsgi的配置中,reload-on-as与evil-reload-on-as、limit-as的区别?

最近使用uwsgi部署项目。为了防止uwsgi进程占用内存越来越多,看到uwsgi有如下配置,但不知道它们之间的区别是什么?希望有高手解答一下。

limit-as

通过使用POSIX/UNIX的setrlimit()函数来限制每个uWSGI进程的虚拟内存使用数。

--limit-as 256

这个配置会限制uWSGI的进程占用虚拟内存不超过256M。如果虚拟内存已经达到256M,并继续申请虚拟内存则会使程序报内存错误,本次的http请求将返回500错误。

reload-on-as

当一个工作进程的虚拟内存占用超过了限制的大小,那么该进程就会被回收重用(重启)。

--reload-on-as 128
这个配置会重启所有占用虚拟内存超过128M的工作进程。当工作进程因此重启时,本次请求的响应不会受影响,返回正常结果。

reload-on-rss

跟reload-on-as的效果类似,不过这个选项控制的是物理内存。你可以同时使用这2个选项:

uwsgi:
  reload-on-as: 128
  reload-on-rss: 96

这个配置会导致所有占用128M以上虚拟内存或者超过96M物理内存的工作进程重启。

当工作进程因此重启时,本次请求的响应不会受影响,返回正常结果。

evil-reload-on-as

主进程会重启占用虚拟内存超过<n>M的工作进程。

evil-reload-on-rss

主要效果跟evil-reload-on-as一样,但是这个选项控制的是非共享物理内存。

阅读 9.4k
1 个回答

根据你上面对每个参数的解释:
limit-as 和 reload-on-as 限制是的虚拟内存,区别是--limit-as不会重启worker进程,reload-on-as会重启worker进程。
evil-reload-on-rss 限制的是物理内存使用量,达到限制会重启worker进程

PS:
虚拟内存是什么:https://baike.baidu.com/item/...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏