鍍金池/ 問答/Python/ 在uwsgi的配置中,reload-on-as與evil-reload-on-a

在uwsgi的配置中,reload-on-as與evil-reload-on-as、limit-as的區(qū)別?

最近使用uwsgi部署項(xiàng)目。為了防止uwsgi進(jìn)程占用內(nèi)存越來越多,看到uwsgi有如下配置,但不知道它們之間的區(qū)別是什么?希望有高手解答一下。

limit-as

通過使用POSIX/UNIX的setrlimit()函數(shù)來限制每個(gè)uWSGI進(jìn)程的虛擬內(nèi)存使用數(shù)。

--limit-as 256

這個(gè)配置會限制uWSGI的進(jìn)程占用虛擬內(nèi)存不超過256M。如果虛擬內(nèi)存已經(jīng)達(dá)到256M,并繼續(xù)申請?zhí)摂M內(nèi)存則會使程序報(bào)內(nèi)存錯(cuò)誤,本次的http請求將返回500錯(cuò)誤。

reload-on-as

當(dāng)一個(gè)工作進(jìn)程的虛擬內(nèi)存占用超過了限制的大小,那么該進(jìn)程就會被回收重用(重啟)。

--reload-on-as 128
這個(gè)配置會重啟所有占用虛擬內(nèi)存超過128M的工作進(jìn)程。當(dāng)工作進(jìn)程因此重啟時(shí),本次請求的響應(yīng)不會受影響,返回正常結(jié)果。

reload-on-rss

跟reload-on-as的效果類似,不過這個(gè)選項(xiàng)控制的是物理內(nèi)存。你可以同時(shí)使用這2個(gè)選項(xiàng):

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

這個(gè)配置會導(dǎo)致所有占用128M以上虛擬內(nèi)存或者超過96M物理內(nèi)存的工作進(jìn)程重啟。

當(dāng)工作進(jìn)程因此重啟時(shí),本次請求的響應(yīng)不會受影響,返回正常結(jié)果。

evil-reload-on-as

主進(jìn)程會重啟占用虛擬內(nèi)存超過<n>M的工作進(jìn)程。

evil-reload-on-rss

主要效果跟evil-reload-on-as一樣,但是這個(gè)選項(xiàng)控制的是非共享物理內(nèi)存。

回答
編輯回答
氕氘氚

根據(jù)你上面對每個(gè)參數(shù)的解釋:
limit-as 和 reload-on-as 限制是的虛擬內(nèi)存,區(qū)別是--limit-as不會重啟worker進(jìn)程,reload-on-as會重啟worker進(jìn)程。
evil-reload-on-rss 限制的是物理內(nèi)存使用量,達(dá)到限制會重啟worker進(jìn)程

PS:
虛擬內(nèi)存是什么:https://baike.baidu.com/item/...

2018年3月27日 02:11